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

Byr*_*ock 98 xml xpath

给定以下XML,如何编写XPath查询以拉出属性所在的节点foo?:

<node1>
  <node2>
    <node3 foo='bar'></node3>
    <node3></node3>
    <node3 bar='foo'></node3>
    <node3 foo='foobar'></node3>
  </node2>
</node1>
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 154

短而甜蜜:

//*[@foo]
Run Code Online (Sandbox Code Playgroud)

当然,您应该使用更具体的表达方式.但随着[@attributeName]你获得具有该属性的所有节点.


Ru5*_*Ru5 25

使用以下XPath表达式

//*[boolean(@foo)]
Run Code Online (Sandbox Code Playgroud)


小智 8

如果您使用和xpath,这可能可以帮助您:

count(//*[@foo])
Run Code Online (Sandbox Code Playgroud)

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