2009-08-29 52 views
21

我正在使用互聯網上的API將對象編組爲XML文件。鑑於XSD文件也可用,我希望能夠在我下載文件後將它們解組到Java對象中。在Android中將XML文件解組爲Java對象?

環顧四周後,它看起來像JAXB是在Java中這樣做的默認庫,但是當我開發移動應用程序時,額外的8.6MB依賴關係是不可接受的。我也發現XStream,但它仍然在7.9MB的重量。

圍繞Android SDK看起來像唯一真正的XML解析器是SAX

所以這裏的問題:

  1. 有沒有辦法讓SAX做我想要什麼?
  2. 我錯過了Android SDK中的另一個工具嗎?
  3. 是否有另一個庫(這是顯着更小),將這樣做?

謝謝。

回答

2

有許多工具可以在Java和XML之間轉換對象,但我所熟悉的都不比您找到的小。但是,根據您的對象圖的複雜性,SAX可能是您所需要的,而且它的開銷很小。訣竅是在SAX事件處理程序中自己構建對象圖。在XML封送器如此廣泛可用之前,我已經在一些項目中使用了這種技術,雖然它需要更多的工作,但它是有效的。

+0

是的......我開始尋找替代品的主要原因是「對象圖」其實很複雜。我會繼續尋找......謝謝。 – 2009-08-30 03:21:31

0

在Android SDK中,除了SAX,DOM解析器和XMLPullParser也可用。

如果您不希望自己完全構建內存中的數據結構,那麼DOM可能會緩解您的痛苦 - 只要速度和內存佔用量足以支付您願意支付的價格。

19

有一個框架可以在Android上工作,它使用與JAXB類似的方式使用註釋執行Java到XML的綁定,它被稱爲Simple並且重量小於270K,這只是XStream所需要的一小部分或者什麼JAXB。此外,它沒有外部依賴關係,只有一個JAR,一切都應該工作。以下是用於Java的簡單和XML序列化框架的鏈接。

http://simple.sourceforge.net

這也可以在處理對象圖的週期。

+4

這個庫看起來不錯,我會用我的android應用程序測試它,但是,有一種工具可以將XSD中的java類構建爲這種格式? – yeradis 2010-05-05 11:58:40

+1

您可能需要將此添加到此評論中:http://www.javacodegeeks.com/2011/02/android-xml-binding-simple-tutorial.html – 2011-03-15 03:20:03

+5

我剛剛寫了一篇全面的博客文章,內容包括簡單的Android項目在這裏:http://robertmassaioli.wordpress.com/2011/04/21/simple-xml-in-android-1-5-and-up/ – 2011-04-21 03:46:55

5

XStream是431k。你不需要你的android應用程序中的整個分佈zip。如果添加xpp3 pull解析器以獲得更快的性能,那麼它將增加24k。這將把你的整個包裝到455k。仍然不理想,但我可以忍受。

1

kxml2-2.2.2是一個很好的小lib(43K),它在JavaME上工作,確實解析併成功地使用它。它唯一的依賴是xmlpull,它是8k。那對於小人物來說如何?

警告是它沒有任何綁定魔法。

0

我們有一款名爲XBinder的產品,它可以從XSD生成類和編碼/解碼代碼。版本2.1佔用約187K。版本2。2(2010年10月到期)大約需要101K(並且比使用Android更容易使用,而不是V2.1)。檢查出來here