当前位置: 首页 > 面试题库 >

适用于Java的最佳XML解析器

长孙鸿振
2023-03-14
问题内容

我需要阅读较小的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实现,因此从技术上讲,无论哪种都可以使用。



 类似资料:
  • 问题内容: 我以前使用过XML Parser,尽管它工作正常,但总体上我并不满意,感觉好像我在使用变通办法来处理应该是基本功能的事情。 我最近看到了SimpleXML,但还没有尝试过。有没有更简单的方法?两者都有哪些优点和缺点?您使用过其他解析器吗? 问题答案: 我不得不说,SimpleXML是蛋糕,因为它首先是用C编写的扩展,并且非常快。但第二,解析后的文档采用PHP对象的形式。这样您就可以像“

  • 问题内容: 哪种Java的CLI解析器比其他CLI解析器更易于使用和扩展? 问题答案: 这里是一些最受欢迎的。它们都是非常漂亮的功能,并且使用了前两个,我可以推荐它们。 Commons CLI http://commons.apache.org/cli/ Java宝石 http://code.google.com/p/javagems/ picocli (具有彩色使用帮助和自动完成功能) http

  • 问题内容: 我正在搜索Java库以解析XML(复杂的配置和数据文件),我用Google搜索了一下,但除了dom4j之外都找不到(似乎他们正在V2上工作)。不喜欢它,其他有关XML的Apache项目似乎处于hibernate状态。我还没有独自评估dom4j,只是想知道-Java是否有其他(良好)开源xml解析库?您对dom4j的体验如何? 在@Voo回答之后,让我再问一个-我应该使用Java的内置类

  • 问题内容: 我正在使用解析Java中的字符串。但是,没有直接解析字符串的函数,所以我改为这样做: 这是最好的方法吗?我觉得必须有一个更简单的方法…谢谢! 问题答案: 直接回答您的问题-据我所知,没有更好的方法。使用输入源是因为它比较通用,可以处理来自文件,字符串或跨线的输入,这是我的理解。 您还可以尝试使用SAX Xml解析器- 它稍微有点基础,并且使用了Visitor模式,但是可以完成工作,对于

  • 问题内容: 任务:我有一个使用xml名称空间和xml模式的现有xml文档(UTF-8)。我需要解析到特定元素,将内容(也需要使用xml名称空间前缀)附加到该元素,然后再次写出Document。 哪个是我应该用于此任务的最佳XML解析器库? 我看过以前的线程(Java的最佳XML解析器),但是不确定dom4j或JDOM是否对命名空间/ xmlSchema有用,以及对UTF-8字符的良好支持。 一些解

  • 问题内容: 什么是HSQLDB数据库的最佳浏览器工具? 问题答案: HSQL具有称为数据库管理器的内置GUI查询工具。在数据库文件的目录中运行: 然后将配置设置为: 允许我以非常方便的方式编辑所需内容。