将XML文件解组为Android中的Java对象?

我正在使用互联网上的API,它将对象编组到XML文件中。 鉴于XSD文件也可用,我希望能够在我下载文件后将它们解组回Java对象。

在环顾四周之后,看起来JAXB是用Java完成此操作的默认库,但在我开发移动应用程序时,额外的8.6MB依赖性是不可接受的。 我也find了XStream ,但它仍然重达7.9MB。

围绕Android SDK,看起来唯一可用的真正的XML解析器是SAX 。

所以这是问题所在:

  1. 有没有办法让SAX做我想做的事情?
  2. 我错过了Android SDK中的其他工具吗?
  3. 是否会有另一个图书馆(显着更小)?

谢谢。

Solutions Collecting From Web of "将XML文件解组为Android中的Java对象?"

有很多工具可以在Java和XML之间转换对象,但是我熟悉的那些工具都不比你find的那些小。 但是,根据对象图的复杂程度,SAX可能就是您所需要的,而且开销非常小。 诀窍是在SAX事件处理程序中自己构建对象图。 在XML编组器广泛可用之前,我已经在几个项目中使用了这种技术,虽然它需要更多的工作,但它是有效的。

有一个适用于Android的框架,它使用与JAXB类似的方式使用注释进行Java到XML的绑定,它被称为Simple,重量不到270K,这是XStream或JAXB所需的一小部分。 此外,它没有外部依赖,只有一个JAR,一切都应该工作。 下面是Simple的简单链接和Java的XML序列化框架。

http://simple.sourceforge.net

这也可以处理对象图中的循环。

XStream是431k。 您不需要Android应用程序中的整个分发zip。 如果你添加xpp3 pull解析器以获得更快的性能,那么它将增加24k。 这将使你的整个包裹达到455k。 仍然不理想,但我可以忍受。

kxml2-2.2.2是一个很好的小lib(43K),可以在JavaME上工作,拉解析,我已成功使用它。 它唯一的依赖是xmlpull,即8k。 小的怎么样?

警告是它没有做任何绑定魔法。

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

如果您不想完全自己构建内存数据结构,DOM可能会减轻您的痛苦 – 只要速度和内存占用是您愿意支付的价格。

我们有一个名为XBinder的产品,可以从XSD生成类和编码/解码代码。 版本2.1大约需要187K。 版本2.2(2010年10月到期)大约需要101K(并且在Android上比v2.1更容易使用)。 看看这里 。