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