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


94

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

例如:

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

Answers:



23
//node[count(@*)=0]

将选择所有具有零属性的<node>


9

解决Marek Czaplicki的评论并扩大答案

//node[not(@*) or not(string-length(@*))]

....将选择具有零个属性或所有属性都为空的所有节点元素。如果这只是您感兴趣的特定属性,而不是全部感兴趣的属性,则可以使用

//node[not(@attribute1) or not(string-length(@attribute1))]

...这将选择所有不具有称为attribute1OR 的属性或attribute1属性为空的节点元素。

也就是说,以下两个xpath表达式中的任何一个都会选择以下元素

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1=""></node> <!--This one -->
    <node attribute1="bbbb"></node>
    <node></node> <!--...and this one -->
</nodes>

见的jsfiddle例如这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.