Java的最佳XML解析器

我需要阅读小文件(最多几MB,UTF-8编码的)XML文件,翻看各种元素和属性,或许修改一些,然后再将XML写回到磁盘(最好使用漂亮的缩进格式) 。

根据我的需求,最适合的XML解析器是什么? 有很多可供选择的。 我知道的一些是:

  • JDOM
  • Woodstox
  • XOM
  • DOM4J
  • VTD-XML
  • 的Xerces-J
  • 赤红
  • 当然也是JDK中的一个(我正在使用Java 6)。 我熟悉Xerces,但发现它笨重。

    建议?


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


    我认为你不应该考虑任何特定的解析器实现。 用于XML处理的Java API允许您以标准方式使用任何符合解析器的实现。 代码应该更加便于携带,并且当您意识到某个特定的解析器已经变得太旧时,您可以用另一个解析器替换而不更改代码行(如果您正确执行该操作)。

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

  • SAX这是最简单的API。 您可以通过定义一个Handler类来读取XML,该类在XML以串行方式处理时接收元素/属性中的数据。 如果你只打算读取一些属性/元素和/或写回一些值(你的情况),它会更快更简单。
  • DOM此方法创建一个对象树,使您可以随意修改/访问它,因此对于复杂的XML操作和处理更好。
  • StAX这是SAX和DOM之间的路径的中间。 您只需编写代码以从处理时感兴趣的解析器中提取数据。
  • 忘记诸如JDOM或Apache之类的专有API(例如Apache Xerces XMLSerializer),因为它会将您与特定的实现联系起来,这些实现可能会及时发展或失去向后兼容性,这将使您在将来要升级时更改代码一个新版本的JDOM或者你使用的任何分析器。 如果你坚持使用Java标准API(使用工厂和接口),你的代码将更加模块化和可维护。

    没有必要说所提出的解析器的所有内容(我没有全部检查,但我几乎可以肯定)符合JAXP的实现,所以在技术上可以使用全部,无论哪一个。


    这是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否否是否

    链接地址: http://www.djcxy.com/p/47491.html

    上一篇: Best XML parser for Java

    下一篇: What Java XML library do you recommend (to replace dom4j)?