2010-11-08 136 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

相关问题