XPath:如何选择没有属性的节点?
Posted
技术标签:
【中文标题】XPath:如何选择没有属性的节点?【英文标题】:XPath: How to select nodes which have no attributes? 【发布时间】:2010-11-22 08:45:58 【问题描述】:使用XPath,如何选择没有属性的节点(其中属性计数= 0)?
例如:
<nodes>
<node attribute1="aaaa"></node>
<node attribute1="bbbb"></node>
<node></node> <- FIND THIS
</nodes>
【问题讨论】:
【参考方案1】://node[not(@*)]
这是选择文档中所有名为“node”的节点的XPath,没有任何属性。
【讨论】:
这很好,但它仍然可以找到<node class=""></node>
我们能做些什么吗?
@MarekCzaplicki 请参阅下面的答案以解决此案例。 ***.com/questions/1323755/…【参考方案2】:
//node[count(@*)=0]
将选择所有具有零属性的
【讨论】:
【参考方案3】:解决 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
【讨论】:
以上是关于XPath:如何选择没有属性的节点?的主要内容,如果未能解决你的问题,请参考以下文章