使用XPath选择节点范围

时间:2009-07-30 00:33:43

标签: java xpath

我们在Java应用程序中使用XPath,我想知道:如何选择一组节点,其中“终止点”是一个不属于同类兄弟的节点。

例如,我想从以下示例中获取两组大小为3和2的<a>标记:

<sample>
   <a />
   <a />
   <a />
   <terminating />
   <a />
   <a />   
</sample>

2 个答案:

答案 0 :(得分:1)

首先,XPath表达式的结果始终是原子值或单个节点集(或XPath 2.0中的序列)。您无法获得节点集列表。

也就是说,对于只有两个组和一个终结符的具体示例,您可以使用preceding-siblingfollowing-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