哪种Java XML解析器用于简单处理?

哪种Java XML解析器用于简单处理?,java,xml,parsing,Java,Xml,Parsing,我正在java应用程序中生成一些XML。我正在研究各种XML解析选项。我只想遍历结构并从中提取值。我需要使用一个内置在JavaAPI(1.5+)中的插件,而不需要任何附加插件。我不需要创建“事件”或将其转换为任何其他内容。我不是在生成XML,只是读取和提取数据。我也没有强制执行模式 Sun在这里提供了一个列表,但我不太清楚应该使用什么 在这种情况下,最合适的XMLAPI是什么?JAXP?JDom?XPath? 使用xpath。如果它非常简单,请在SAX解析器中使用它 IMO中最经典的处理方式是

我正在java应用程序中生成一些XML。我正在研究各种XML解析选项。我只想遍历结构并从中提取值。我需要使用一个内置在JavaAPI(1.5+)中的插件,而不需要任何附加插件。我不需要创建“事件”或将其转换为任何其他内容。我不是在生成XML,只是读取和提取数据。我也没有强制执行模式

Sun在这里提供了一个列表,但我不太清楚应该使用什么

在这种情况下,最合适的XMLAPI是什么?JAXP?JDom?XPath?


使用xpath。

如果它非常简单,请在SAX解析器中使用它

IMO中最经典的处理方式是JAXP和XPath的组合。Java5.0包括JAXP1.3,这是标准的东西。请参阅a以获取最低限度的编码示例。

我认为使用DOM解析器解析XML并将其加载到文档中的内存中听起来足以满足您的需要

在这种情况下,您不会使用XPath,只使用文档API

JAXP只是内置到JDK中的XML解析技术的同义词。术语JAXP(P表示解析)将其与JAXB(B表示绑定)区分开来

一些建立在DOM之上的第三方库可能会让您的生活更轻松。想想JDOM或DOM4J。

这似乎就是您想要的API


谷歌“SAX解析”,你会发现很多例子。

我认为最实用的工具是来自ThoughtWorks的XStream。一些现代mvc框架,如VRaptor,使用它来服务和使用xml。看一看:

我认为DOM解析器就是您要寻找的。它易于实现,并且具有快速搜索节点的功能

作为解析策略,您可以使用任意一种DOM策略,这两种策略都具有这样的优点,即hole文档保存在内存中,您可以通过xpath访问它。如果您有小型xml文档,或者确实需要所有数据始终存在并可访问,我建议您这样做,因为这会占用大量堆空间


如果您有更大的文档,或者如果您不需要一直访问,那么您应该使用SAX方法或Stax方法(xml拉解析),如果您的java发行版中有这种方法的话。这些方法是基于事件的。因此,它们遍历xml树并对您定义的类进行回调。因此,您可以使用标准DOM解析器对“元素xy开始”、“元素xy结束”等事件做出反应,这对于您的目的来说已经足够好了。试试。

Jaxp、JDOM和XPath已经有一段时间没有更新了。我认为为了便于使用,vtd xml可能值得研究。@vtd xml作者-JDK补丁版本通常包含对JAXP实现的更新。不要将规范更新与实现更新混淆。@非常感谢您的快速响应。我将其归结为DOM或XPath。听起来像是多姆。XPath会更简单吗?请检查以下问题。它有两个答案,一个是XPath,另一个是XPath:Checkout:这与问题完全无关。问题在于xml解析。您的答案涉及xml序列化…“我不打算做任何事情,只想遍历结构并从中提取值。”事实上,我的错!谢谢你的指导。但是SAX似乎使用事件?我认为DOM解析器是这个项目的解决方案。我发现这个例子展示了复杂性。DOM听起来像是必需的。我需要在JDK中保持它的标准。不幸的是,没有第三方解决方案/插件/插件。我需要从XML中提取数据,因此XPath在这方面就太过重要了?如果您将XML解析为DOM树,您应该使用为您提供的API来访问数据。谢谢。。。关于这一点,有一个迟来的评论:“JAXP只是内置于JDK中的XML解析技术的同义词”的说法是绝对不正确的。JAXP是一个由多个XML解析器支持的接口(API),而内置在JDK中的解析器只是它的一个实现。此外,JAXP的范围超出了解析——它还涵盖了验证和转换。这个问题最初被回答九年后可能是真的,但当时可能不是。我希望这条最新的评论能对某些人有所帮助。除非它内置在标准SDK 1.5中,否则无法使用它+