3

我想提取所有直接作为子节点出现的文本元素到根节点DefaultHandler我已经使用;浏览了 java 标准萨克斯风。但它似乎并不具有路径意识。

问题是获取first-level 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 表达式子集的库。

4

2 回答 2

2

SAX 和 StAX 本质上确实不是路径感知的,因为它们是面向事件的。虽然实现跟踪解析级别的处理程序当然是可能的,但使用XPath可能会更好。

一个更复杂的策略可能是编写一个 XSLT 转换,它只保留您所追求的元素,然后使用 SAX 或 Stax 处理结果。

于 2011-03-23T11:24:11.740 回答
1

这会有点开销,但你会得到一个强大的工具来处理 xml。尝试JAXB

于 2011-03-23T09:49:24.017 回答