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

鉴于以下XML,我该如何编写一个XPath查询来拉取属性foo所在的节点?

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

简短而甜美:

 //*[@foo] 

当然你应该使用更具体的expression。 但是通过[@attributeName]你可以得到所有具有该属性的节点。

使用以下XPathexpression式

 //*[boolean(@foo)] 

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

 count(//*[@foo]) 

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