XPath: 如何检查属性是否存在?

132

给定以下XML,我如何编写XPath查询以提取存在属性foo的节点?:

<node1>
  <node2>
    <node3 foo='bar'></node3>
    <node3></node3>
    <node3 bar='foo'></node3>
    <node3 foo='foobar'></node3>
  </node2>
</node1>
3个回答

214

简短明了:

//*[@foo]

当然,你应该使用更具体的表达式。但是使用 [@attributeName] 可以获取所有具有该属性的节点。


40

使用以下XPath表达式

//*[boolean(@foo)]

这在它是一个更大的布尔表达式的一部分的情况下非常有用,例如 //button[@id='foo' and boolean(@disabled)] - jewbix.cube

11

如果您使用xpath,这可能会对您有所帮助:

count(//*[@foo])

它将返回具有属性foo的节点/子项的计数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接