XPath 获取除具有特定名称的子元素之外的所有子元素?
Posted
技术标签:
【中文标题】XPath 获取除具有特定名称的子元素之外的所有子元素?【英文标题】:XPath to get all child elements except one with specific name? 【发布时间】:2011-05-06 12:17:37 【问题描述】:如何定位文档中的所有元素除了特定元素名称?
例如,我想排除 terminate
元素。它们可以在整个文档中出现。
<root>
<terminate attr="1" />
<other>
The brown fox jumps over the fence.
<terminate>
<b>stuff</b>
</terminate>
</other>
</root>
我尝试使用 not(..)
运算符没有成功,可能是因为我用错了。
坦率地说,尝试在 Google 上“不”是很困难的!
【问题讨论】:
【参考方案1】:如果您使用的是 XPath 2.0,则可以使用
/root/* except /root/terminate
你所期望的。它匹配存在于第一个序列中但不存在于第二个序列中的节点。
XPath 2.0 Specification - except operator
【讨论】:
【参考方案2】:以下 xpath 应该可以工作
/root/*[not(self::terminate)]
另外,我认为你也可以这样做
/root/*[not(name()='terminate')]
【讨论】:
要选择文档中任何位置的所有元素,请使用://*[not(self::a)]
"我无法自行终止" =)以上是关于XPath 获取除具有特定名称的子元素之外的所有子元素?的主要内容,如果未能解决你的问题,请参考以下文章
xpath按元素和属性查找节点,其中包含具有特定id的子元素
XPATH 选择类型元素名称为 xs:simpleType 的子元素
使用 jQuery 获取不是具有特定 CSS 类的容器的子元素的元素的后代