XPath: ¿Cómo comprobar si existe un atributo?

104

Dado el siguiente XML, ¿cómo escribo una consulta XPath para extraer nodos donde fooexiste el atributo ?:

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

Respuestas:

163

Corto y dulce:

//*[@foo]

Por supuesto, debería utilizar una expresión más específica. Pero con [@attributeName]obtiene todos los nodos que tienen ese atributo.

Felix Kling
fuente
25

Utilice la siguiente expresión XPath

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

Si usa y xpath, esto tal vez pueda ayudarlo:

count(//*[@foo])

devolverá el recuento de nodo / niño que tiene el atributo foo

fritz
fuente