Java的最佳XML解析器
我需要阅读小文件(最多几MB,UTF-8编码的)XML文件,翻看各种元素和属性,或许修改一些,然后再将XML写回到磁盘(最好使用漂亮的缩进格式) 。
根据我的需求,最适合的XML解析器是什么? 有很多可供选择的。 我知道的一些是:
当然也是JDK中的一个(我正在使用Java 6)。 我熟悉Xerces,但发现它笨重。
建议?
如果速度和内存没有问题,dom4j是一个非常好的选择。 如果您需要速度,那么使用像Woodstox这样的StAX解析器是正确的方法,但您必须编写更多代码才能完成工作,并且您必须习惯在流中处理XML。
我认为你不应该考虑任何特定的解析器实现。 用于XML处理的Java API允许您以标准方式使用任何符合解析器的实现。 代码应该更加便于携带,并且当您意识到某个特定的解析器已经变得太旧时,您可以用另一个解析器替换而不更改代码行(如果您正确执行该操作)。
基本上有三种以标准方式处理XML的方式:
忘记诸如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下一篇: What Java XML library do you recommend (to replace dom4j)?