如果说我有以下XML文件:
<title text=“title1">
<comment id=“comment1">
<data> this is part of comment one</data>
<data> this is some more of comment one</data>
</comment>
<comment id=“comment2”>
<data> this is part of comment two</data>
<data> this is some more of comment two</data>
<data> this is even some more of comment two</data>
</comment>
</title>
我得到了以下XPath查询:
/title/comment/@id
获取表达式所属的子树的最佳方法是什么。
因此,例如,上面的表达式将返回:
id="comment1"
id="comment2"
comment1
属于其中的子树: <comment id="comment1">
<data> this is part of comment one</data>
<data> this is some more of comment one</data>
</comment>
并且,
comment2
属于子树: <comment id=“comment2">
<data> this is part of comment two</data>
<data> this is some more of comment two</data>
<data> this is even some more of comment two</data>
</comment>
我之所以想要这样做,是因为我可以递归地在解析Xpath表达式的子树上进行调用。
我正在使用DOM在Java中对此进行编码。
最佳答案
听起来XPath表达式直到运行时才是未知的。
而且您想获得XPath表达式选择的每个节点的父级...对吗? <comment>
元素是每个comment/@id
属性的父级。获取<comment>
元素等效于获取其子树(后代),因为您可以使用其他XPath表达式或DOM函数提取其后代,或者可以复制<comment>
元素及其后代。
回答您问题的一种方法是将“ / ..”简单地附加到XPath表达式的末尾。例如。
"/title/comment/@id"
会成为
"/title/comment/@id/.."
这等效于@Dan的答案,但可以很容易地从XPath表达式中得出。