嗨,我知道这很基本,但我自己找不到答案。
在这个例子中:
<root>
<a/>
<b/>
<c/>
<d/>
</root>
我想选择root
和b
以外的所有d
个孩子。
我写了类似的东西,但是没有用。
/root/*[not(b) and not(d)]
结果是所有的根孩子:a,b,c,d
。
如何仅选择a
和c
?
答案 0 :(得分:1)
正确的xpath是/root/*[name() != 'b' and name() != 'c']
,我检查了节点的名称
答案 1 :(得分:1)
&#34;我想选择除
以外的所有根儿童props
和{...props}
&#34;
您尝试的XPath错过b
轴:
d
答案 2 :(得分:1)
如果您正在使用XPath 2.0,则可以使用以下内容,如果您必须更新排除列表,则可能会更短,更容易阅读:
/root/*[not(name() = ('b', 'c'))]
这利用了序列上的XPath 2.0 =
运算符,如果比较序列中有一对相等的项,则返回true
。因此,如果元素name()
为'b'
或'c'
,则比较为true
,然后您要排除该节点(因此{{1} }})。
另外,请检查What is the difference between name() and local-name()?,看看您是否应该使用not()
或name()
。在大多数情况下,人们真正想要的是local-name()
。