当前位置:  开发笔记 > 编程语言 > 正文

适用于Java的最佳XML解析器

如何解决《适用于Java的最佳XML解析器》经验,为你挑选了4个好方法。

我需要阅读较小的(最多几个MB,UTF-8编码的)XML文件,浏览各种元素和属性,或许修改一些并将XML再次写回磁盘(最好使用漂亮的缩进格式) .

什么是最符合我需求的XML解析器?有很多可供选择.我知道的有些是:

JDOM

Woodstox

XOM

DOM4J

VTD-XML

的Xerces-J

赤红

当然是JDK中的那个(我使用的是Java 6).我对Xerces很熟悉,但发现它很笨重.

建议?



1> Fernando Mig..:

我认为你不应该考虑任何特定的解析器实现.Java API for XML Processing允许您以标准方式使用任何符合标准的解析器实现.代码应该更加可移植,并且当您意识到特定解析器已经变得太旧时,您可以在不更改代码行的情况下将其替换为另一行(如果您正确执行).

基本上有三种以标准方式处理XML的方法:

SAX这是最简单的API.您通过定义Handler类来读取XML,该类在以串行方式处理XML时接收元素/属性内的数据.如果您只打算读取一些属性/元素和/或写回一些值(您的情况),它会更快更简单.

DOM此方法创建一个对象树,允许您随机修改/访问它,以便更好地进行复杂的XML操作和处理.

StAX这是SAX和DOM之间的路径中间.您只需编写代码即可在处理数据时从您感兴趣的解析器中提取数据.

忘记专有API,例如JDOM或Apache专用API(即Apache Xerces XMLSerializer),因为它会将您绑定到可能及时发展或失去向后兼容性的特定实现,这将使您在将来要升级时更改代码新版本的JDOM或您使用的任何解析器.如果您坚持使用Java标准API(使用工厂和接口),您的代码将更加模块化和可维护.

没有必要说所有(我没有检查所有,但我几乎可以肯定)解析器建议符合JAXP实现,所以从技术上讲,你可以使用所有,无论哪个.


实际上,有3种方式:StAX(javax.xml.stream)是第三种标准方式.

2> 小智..:

这是关于DOM,SAX,StAX和TrAX的一个很好的比较(来源:http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/SJSXP2.html)

功能StAX SAX DOM TrAX

API类型                 拉,流式推送,流式传输在内存树XSLT规则中

易于使用           高中高中等

XPath能力    否否是是

CPU和内存     良好的变化变化

仅转发        是是否否

读取XML              是是是是

写XML              是否是是

CRUD                      否否是否


您可以使用SAX编写XML.接收器提供了一个处理程序实现,用户可以在其上调用SAX事件来生成XML输出.(我看到表格来源而不是原始材料,但表格却错了)

3> zehrer..:

如果速度和内存没问题,dom4j是一个非常好的选择.如果你需要速度,使用像Woodstox这样的StAX解析器是正确的方法,但你必须编写更多的代码来完成工作,你必须习惯于在流中处理XML.


dom4j非常好,但绝对不是没有问题.有关dom4j的替代方案,请参阅http://stackoverflow.com/questions/831865/what-java-xml-library-do-you-recommend-to-replace-dom4j

4> 小智..:

简单的XML http://simple.sourceforge.net/非常容易(反)序列化对象.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有