我需要读取不大的(最多几MB,UTF-8编码)XML文件,并查看各种元素和属性,可能会修改其中一些内容并将XML重新写回磁盘(最好使用漂亮的缩进格式)。
对于我的需求,哪种XML解析器最好?有很多可以选择。我知道的一些包括:
当然,还有JDK中的XML解析器(我正在使用Java 6)。我熟悉Xerces但觉得它笨重。
你有什么推荐吗?
我需要读取不大的(最多几MB,UTF-8编码)XML文件,并查看各种元素和属性,可能会修改其中一些内容并将XML重新写回磁盘(最好使用漂亮的缩进格式)。
对于我的需求,哪种XML解析器最好?有很多可以选择。我知道的一些包括:
当然,还有JDK中的XML解析器(我正在使用Java 6)。我熟悉Xerces但觉得它笨重。
你有什么推荐吗?
我认为你不应考虑任何特定的解析器实现。Java API for XML Processing允许您以标准方式使用符合规范的任何解析器实现。代码应该更具可移植性,当您意识到特定解析器已经过时时,您可以在不更改代码的情况下替换它(如果您正确地执行了这项操作)。
基本上有三种以标准方式处理XML的方法:
不要考虑专有API,如JDOM或Apache(即Apache Xerces XMLSerializer),因为这会将您绑定到特定实现上,该实现可能会随时间推移而发生变化或失去向后兼容性,这将使您在将来想要升级到新版本的JDOM或任何解析器时更改代码。如果您坚持使用Java标准API(使用工厂和接口),则代码将更具模块化和可维护性。
毋庸置疑,所有(我没有检查所有,但我几乎可以确定)建议的解析器都符合JAXP实现规范,因此您可以使用所有解析器,无论哪个。
XPath能力 无 无 是 是
CPU和内存 良好 良好 不确定 不确定
仅正向遍历 是 是 否 否
读取XML 是 是 是 是
写入XML 是 否 是 是
CRUD 增删改查 否 否 是 否
我发现dom4j是处理XML的工具,尤其是与Xerces相比。
如果您的应用程序需要大量“思考”,我不建议使用此方法,但使用XSLT可能比Java操作更好(并且通过XSLT到字节码编译可能更快)。