XPath获取除具有特定名称的子元素之外的所有子元素?

时间:2010-11-08 05:38:41

标签: xml xpath elements

如何定位文档中的所有元素除了特定元素名称?

例如,我想排除terminate个元素。它们可以在整个文档中出现。

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

我尝试使用not(..)运算符但未成功,因为我使用错了。

坦率地说谷歌'不'是艰难的!

2 个答案:

答案 0 :(得分:51)

以下xpath应该可以正常工作

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

此外,我认为你也可以这样做

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

答案 1 :(得分:1)

如果您使用的是XPath 2.0,则可以使用

/root/* except /root/terminate

您的期望是什么?它匹配第一个序列中存在但不存在第二个序列的节点。

XPath 2.0 Specification - except operator