2015-11-08 118 views
1

我需要選擇最接近(不需要)根的特定節點名稱。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

回答

0

我找到了解決辦法,只是用 + 祖先,如:

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

我會嘗試以下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