XPath:如何选择没有属性的节点?

时间:2009-08-24 17:44:41

标签: xpath

使用XPath,如何选择没有属性的节点(其中属性count = 0)?

例如:

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1="bbbb"></node>
    <node></node> <- FIND THIS
</nodes>

3 个答案:

答案 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>