编程语言
首页 > 编程语言> > Java上下文Sax / Stax解析

Java上下文Sax / Stax解析

作者:互联网

我想提取所有直接作为根节点的子节点出现的文本元素.我对使用DefaultHandler的java标准sax便利性有所了解;但似乎并不了解路径.

问题是只获得第一级节点,而不是extracting only text-nodes.

有没有面向非DOM的方法可以做到这一点? (注意,事先不知道节点名称)

[编辑]

样本输入

<root>
   <a>text1</a>
   <b>text2</b>
   <c>text3</c>
   <nested>
       <d>not_text4</d>
       ...
   <nested>
   ...
</root>

样品输出

Map<String, String> map := {
    {a, text1}
    {b, text2}
    {c, text3}
}

当前解决为面向DOM的解决方法.尽管有一些库为SAX / STAX提供了xpath表达式的子集.

解决方法:

SAX和StAX确实是面向事件的,因此它们本质上并不了解路径.尽管当然可以实现一个跟踪解析级别的处理程序,但使用XPath可能会更好.

稍微复杂一点的策略可能是编写一个XSLT转换,该转换仅保留您要查找的元素,然后使用SAX或Stax处理结果.

标签:stax,dom,sax,java,xml-parsing
来源: https://codeday.me/bug/20191208/2092638.html