我需要读取少量(最多几MB,UTF-8编码)XML文件,四处搜索各种元素和属性,也许修改一些,然后将XML重新写回磁盘(最好是使用良好的缩进格式)
什么样的XML解析器最适合我的需要?有很多选择。我知道的有:
当然还有JDK中的一个(我使用的是Java6),我熟悉Xerces,但觉得它很笨重
推荐
我认为您不应该考虑任何特定的语法分析器实现。http://en.wikipedia.org/wiki/JAXP“rel=”noreferrer“>用于XML处理的Java API允许您以标准方式使用任何符合标准的解析器实现。代码应该更具可移植性,当您意识到某个特定的解析器已经太旧时,您可以用另一个解析器替换它,而无需更改代码行(如果您做得正确的话)
基本上有三种以标准方式处理XML的方法:
- SAX这是最简单的API。通过定义一个处理程序类来读取XML,该处理程序类在以串行方式处理XML时接收元素/属性中的数据。如果您只计划读取一些属性/元素和/或写回一些值(您的案例),则会更快、更简单
- DOM此方法创建一个对象树,允许您随机修改/访问它,以便更好地进行复杂的XML操作和处理
- ”Stx这是在SAX和DOM之间的路径中间。您只需编写代码,以便在处理数据时从感兴趣的解析器中提取数据
忘记诸如JDOM或Apache之类的专有API(即Apache Xerces XMLSerializer),因为它会将您绑定到一个特定的实现,该实现可能会随着时间的推移而发展,或者会失去向后兼容性,这将使您在将来想要升级到新版本的JDOM或任何您使用的解析器时更改代码。如果您坚持使用Java标准API(使用工厂和接口),您的代码将更加模块化和可维护
没有必要说所有(我没有检查所有,但我几乎可以肯定)提议的解析器都符合JAXP实现,因此从技术上讲,您可以使用所有解析器,不管是哪种解析器