使用 XPath,如何选择没有属性的节点(其中属性计数 = 0)?
例如:
<nodes>
<node attribute1="aaaa"></node>
<node attribute1="bbbb"></node>
<node></node> <- FIND THIS
</nodes>
//node[not(@*)]
这是选择文档中所有名为“node”的节点的 XPath,没有任何属性。
//node[count(@*)=0]
将选择所有具有零属性的
解决 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>
请参阅 jsfiddle 示例 here
<node class=""></node>
我们可以做些什么?