繁体   English   中英

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

[英]Unmarshalling XML files into Java objects in Android?

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

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

在Android SDK中,看起来唯一可用的真正XML解析器是SAX

所以这就是问题:

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

谢谢。

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

http://simple.sourceforge.net

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

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

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

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更容易使用)。 在这里查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM