2010-02-14 56 views
5

REST XML(不是JSON!)Web Service應該在Google App Engine和Android應用程序之間交換XML Schema指定的XML。Android和Google App Engine:支持XML綁定工具嗎?

我想爲兩者都使用XStream,但是我無法讓它適用於Google App Engine,因此對我而言,Apache XMLBeans是下一個最佳選擇(JAXB在兩者上都不起作用)。 但是,使用Google App Engine沒有問題,但在Android上,我遇到了一些嚴重的異常(例如,由於使用了帶有javax.xml。*包的Stax API)。

所以,

  1. 是否有任何其他XML結合可能性的GAE和Android流XML文檔?
  2. 如果沒有,是否可以修補Apache XMLBeans以與Android一起使用?

謝謝!

回答

0

Android缺乏對XML生成期的內置支持。由於JSON可以解析和生成JSON文檔,因此Android更強大。

在修補XMLBeans方面,您可能會發現找到一些具有較少依賴性的其他軟件包會更快。您不能輕易導入駐留在java.*javax.*包中的任何新代碼。

2

我戳在黑暗中在這裏,因爲我還沒有嘗試過這樣的事,但:從XBinder聲稱,他們是「在幾周內」發佈一個Android兼容的版本

this blog entry 。雖然目前這可能不是一種選擇,但他們也會解釋一下他們是如何做到的,在Android中已經存在的XmlPull支持上包裝了一個StAX類似的包裝器。

(我的答案原本在Android上工作XStream的另一段,但後來我再次閱讀問題,發現你的問題是與得到的XStream對AppEngine上側工作...)

+0

從文本結束,這正是我正在尋找的。現在我正在評估http: //vtd-xml.sourceforge.net/,它工作的很好,但是沒有數據綁定器,只要android兼容版本出來,我就會檢查它 – Ice09 2010-03-02 11:15:58

+0

你在XML數據綁定中尋找什麼功能? – 2010-05-27 07:33:52

2

XML數據適用於Google App Engine和Android的綁定框架是Simple。它使用與JAXB類似的註釋來註釋POJO,然後可以使用XML對其進行序列化和反序列化。例如,註釋對象看起來像。

@Root 
public class Pojo { 
    @Attribute 
    private String name; 
    @Element 
    private String value 

    public String getName() { 
     return name; 
    } 

    public String getValue() { 
     return value; 
    } 
} 

然後生成XML所有你需要做的是。

Serializer serializer = new Persister(); 
serializer.write(instance, outputSteam) 

要閱讀,你可以做

Serializer serializer = new Persister(); 
Pojo pojo = serializer.read(Pojo.class, inputSteam) 

而且完蛋了!它具有許多其他功能和註釋的強大框架。它適用於Android,Google App Engine和任何JDK 1.5+。它沒有依賴性,重量很輕。欲瞭解更多信息,請參閱Tutorial

0

您可以使用Castor。只要確定,在Android 2.1中,不要使用默認的android SAXParser。你會得到命名空間錯誤。您可以通過將解析器定義爲core.properties中的Xerces(以及您添加所需的JARS)來完成此操作。在android 2.2中,它可能沒問題。請注意,如果您使用xerces爲unmarsheler創建xmlcontext,它仍然不起作用,因爲映射本身可能會使用android的SAX進行解析。它必須在覈心(頂層屬性文件)完成,以便即使映射也被xerces解析。最後 - 性能是如你所期望的那樣緩慢...... :(祝你好運SM

1

另一種選擇是Pulloid(pulloid.org)。它依賴於Android中包含的XmlPull API。現在需要使用XPP3這樣的XmlPull實現 - 我不知道它是否是一個顯示限制器