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>

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.


25

Utilice la siguiente expresión XPath

//*[boolean(@foo)]

8

Si usa y xpath, esto tal vez pueda ayudarlo:

count(//*[@foo])

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.