我们在Java应用程序中使用XPath,我想知道:如何选择一组节点,其中“终止点”是一个不属于同类兄弟的节点。
例如,我想从以下示例中获取两组大小为3和2的<a>
标记:
<sample>
<a />
<a />
<a />
<terminating />
<a />
<a />
</sample>
答案 0 :(得分:1)
首先,XPath表达式的结果始终是原子值或单个节点集(或XPath 2.0中的序列)。您无法获得节点集列表。
也就是说,对于只有两个组和一个终结符的具体示例,您可以使用preceding-sibling
和following-sibling
:
/sample/terminating/preceding-sibling::a
/sample/terminating/following-sibling::a
答案 1 :(得分:0)
扩展Pavel Minaev的答案 - 我会写一个循环,就像这样(“i
”是循环索引):
<terminating>
个节点
→/sample/terminating
./preceding-sibling::a[count(preceding-sibling::terminating) = {i}]
<terminating>
节点,也找到了
→./following-sibling::a