xpath:选择最接近根的节点

xpath:选择最接近根的节点

问题描述:

我需要选择最接近(不需要)根的特定节点名称。xpath:选择最接近根的节点

实施例:

<root> 
    <a> 
     <b id="1"></b> 
     <b id="2"> 
      <b id="3"></b> 
     </b> 
     <c> 
      <b id="4"></b> 
     </c> 
    </a> 
</root> 

应该选择b#1b#2b#4,但不是b#2,因为它是包括在另一b节点的内部。

目前我在做:选择全部b,所以检查一下父母是否是b,如果是的话,放弃。但我这样做硬编码,也许xpath可以解决这个问题吗?

+0

你有解决方案吗? – SIslam

我找到了解决办法,只是用 + 祖先,如:

//table[not(ancestor::table)] 

我会尝试以下expression-

//b[not(.//ancestor::b)] 

它selects-

<b id="1"/> 

<b id="4"/> 

看到活在here

+0

谢谢,但它也应该选择'b#2'。 –

+0

啊!它正在工作请参见http://www.xpathtester.com/xpath/86392351508625621a3b61d8c2caaa9c – SIslam

+0

您的报价'它应该选择b#1,b#2和b#4,但不是b#2,'所以它不代表' b#1'和'b#4'?因此我尝试了 - 谢谢 – SIslam