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

时间:2010-09-17 18:21:45

标签: xml xpath

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

<node1>
  <node2>
    <node3 foo='bar'></node3>
    <node3></node3>
    <node3 bar='foo'></node3>
    <node3 foo='foobar'></node3>
  </node2>
</node1>

3 个答案:

答案 0 :(得分:144)

短而甜蜜:

//*[@foo]

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

答案 1 :(得分:21)

使用以下XPath表达式

//*[boolean(@foo)]

答案 2 :(得分:8)

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

count(//*[@foo])

它将返回具有属性foo

的节点/子节点数