Java XML 解析:使用 SAX 获取内部 XML

Posted

技术标签:

【中文标题】Java XML 解析:使用 SAX 获取内部 XML【英文标题】:Java XML parsing: taking inner XML using SAX 【发布时间】:2011-06-29 01:18:54 【问题描述】:

我正在使用 SAX 解析一个 XML 文件,有时我需要一个元素的内部 XML。例如,对于以下 XML

<a name="abc">
  <b>def</b>
<a>

我需要获取元素 a 的内部 XML,即

<b>def<b>

最简单的方法是什么?

谢谢。

伊万

【问题讨论】:

为什么不使用 xpath?对于您描述的情况,SAX 编码有些痛苦 【参考方案1】:

对于这种情况,我建议使用 2 个内容处理程序。第一个负责查找文档的相关部分,第二个负责处理内容。我对类似问题的回答(见下面的链接)演示了如何实现这种方法:

Using SAX to parse common XML elements

【讨论】:

太好了,非常感谢。还有一个问题。如何用 SAX 阅读“纯 XML 代码”?我应该重建它(startElement 读取元素的名称,characters 读取里面的文本......),还是有更好的方法?我希望其他处理程序获取元素内的所有 XML 并将其作为结果返回。 最终这取决于你想做什么(你能提供更多细节吗?)。最终,SAX 只是为您提供事件,您需要相应地处理它们。 StAX 是一个类似的 API,您可能会发现它很容易使用,因为您可以控制何时触发事件(最终您会得到相同的信息)。 我正在分析 WSLA 文档。我需要从SLAParameterServiceLevelObjective 等一些重要元素中获取信息。此外,对于一些重要元素(例如metric),我需要获取有关元素(即属性值)和元素的整个 XML 代码。

以上是关于Java XML 解析:使用 SAX 获取内部 XML的主要内容,如果未能解决你的问题,请参考以下文章

使用 sax 获取内部 xml

使用 Sax Parser、Java 处理 XML 中的空标签

Java SAX解析

使用 SAX 解析器时如何获取父节点?

在 Java 中使用 SAX 解析大型 XML

Java高级特性 第14节 解析XML文档 - SAX 技术