一尘不染

适用于Java的最佳XML解析器

java

我需要阅读较小的XML文件(最多只有几MB,UTF-8编码),四处寻找各种元素和属性,也许要修改一些并将XML重新写回磁盘(最好采用缩进格式) 。

什么是满足我需求的最佳XML解析器?有很多可供选择。我知道的一些是:

  • JDOM
  • Woodstox
  • XOM
  • dom4j
  • VTD-XML
  • Xerces-J
  • Crimson

当然是JDK中的那个(我正在使用Java 6)。我对Xerces很熟悉,但是觉得笨拙。


阅读 915

收藏
2020-02-26

共1个答案

一尘不染

我认为你不应该考虑任何特定的解析器实现。用于XML处理的Java API使你能够以标准方式使用任何符合条件的解析器实现。该代码应该具有更大的可移植性,并且当你意识到某个特定的解析器太旧时,可以在不更改代码行的情况下(如果正确执行)将其替换为另一个。

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

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

无需说所有(我没有检查全部,但我几乎可以肯定)的解析器都符合JAXP实现,因此从技术上讲,无论哪种都可以使用。

2020-02-26