有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用XPath选择节点范围

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

例如,我想从下面的例子中得到两组大小为3和2的<a>标记:

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

共 (2) 个答案

  1. # 1 楼答案

    首先,XPath表达式的结果总是原子值或单个节点集(或XPath2.0中的序列)。无法获取节点集的列表

    也就是说,对于只有两个组和一个终止符的特定示例,您可以只使用preceding-siblingfollowing-sibling

    /sample/terminating/preceding-sibling::a
    /sample/terminating/following-sibling::a
    
  2. # 2 楼答案

    扩展Pavel Minaev的答案-我会写一个循环,如下(“i”是循环索引):


    • 的帮助下查找所有<terminating>节点 → /sample/terminating
    • 对于每一项,请查找所有的
      ./preceding-sibling::a[count(preceding-sibling::terminating) = {i}]
    • 对于最后一个<terminating>节点,还可以找到
      ./following-sibling::a