XPath: Como verificar se existe um atributo?

104

Dado o seguinte XML, como escrevo uma consulta XPath para puxar nós onde o atributo fooexiste ?:

<node1>
  <node2>
    <node3 foo='bar'></node3>
    <node3></node3>
    <node3 bar='foo'></node3>
    <node3 foo='foobar'></node3>
  </node2>
</node1>
Byron Whitlock
fonte

Respostas:

163

Curto e grosso:

//*[@foo]

Claro que você deve usar uma expressão mais específica. Mas com [@attributeName]você obtém todos os nós que possuem esse atributo.

Felix Kling
fonte
25

Use a seguinte expressão XPath

//*[boolean(@foo)]
Ru5
fonte
8

Se você usa e xpath, isso pode ajudá-lo:

count(//*[@foo])

ele retornará a contagem de nodos / filhos que possuem o atributo foo

fritz
fonte