2010-11-08 78 views
28

如何定位文檔中的所有元素,但是是特定的元素名稱?XPath獲取除具有特定名稱的所有子元素嗎?

例如,我想排除terminate元素。它們可以發生在整個文件中。

<root> 
    <terminate attr="1" /> 
    <other> 
     The brown fox jumps over the fence. 
     <terminate> 
      <b>stuff</b> 
     </terminate> 
    </other> 
</root> 

我使用not(..)操作沒有成功可能是因爲我使用的是錯誤的嘗試。

坦率地試圖谷歌'不'很難!

回答

41

以下XPath應努力

/root/*[not(self::terminate)] 

另外,我覺得你可以用這個做得一樣好

/root/*[not(name()='terminate')] 
+1

要選擇* *所有的元素,在文檔中的任意位置,使用這樣的:'// * [不(個體經營::一)]' – jpadvo 2013-11-04 20:06:50

+8

「我不能自行終止」=) – roryok 2015-01-30 15:38:15

1

如果您正在使用XPath 2.0可以使用

/root/* except /root/terminate 

這就是你所期望的。它與第一個序列中存在的節點相匹配,但不是第二個。

XPath 2.0 Specification - except operator

相關問題