适用于Java的最佳XML解析器
我需要阅读较小的XML文件(最多只有几MB,UTF-8编码),四处寻找各种元素和属性,也许要修改一些并将XML重新写回磁盘(最好采用缩进格式) 。
什么是满足我需求的最佳XML解析器?有很多可供选择。我知道的一些是:
- JDOM
- Woodstox
- XOM
- dom4j
- VTD-XML
- Xerces-J
- Crimson
当然是JDK中的那个(我正在使用Java 6)。我对Xerces很熟悉,但是觉得笨拙。
回答:
我认为你不应该考虑任何特定的解析器实现。用于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实现,因此从技术上讲,无论哪种都可以使用。
以上是 适用于Java的最佳XML解析器 的全部内容, 来源链接: utcz.com/qa/430946.html