使用XPath,如何选择没有属性的节点(其中属性count = 0)?
例如:
<nodes>
<node attribute1="aaaa"></node>
<node attribute1="bbbb"></node>
<node></node> <- FIND THIS
</nodes>
答案 0 :(得分:131)
//node[not(@*)]
这是XPath选择文档中名为“node”的所有节点,没有任何属性。
答案 1 :(得分:22)
//node[count(@*)=0]
将选择所有&lt; node&gt;零属性
答案 2 :(得分:4)
解决Marek Czaplicki的评论并扩大答案
//node[not(@*) or not(string-length(@*))]
....将选择所有具有零属性的节点元素,或者具有全部为空的属性。如果它只是您感兴趣的特定属性,而不是所有属性,那么您可以使用
//node[not(@attribute1) or not(string-length(@attribute1))]
...这将选择所有节点元素,这些节点元素没有名为attribute1
的属性,或者attribute1
属性为空。
也就是说,这些xpath表达式
中的任何一个都会选择以下元素<nodes>
<node attribute1="aaaa"></node>
<node attribute1=""></node> <!--This one -->
<node attribute1="bbbb"></node>
<node></node> <!--...and this one -->
</nodes>