2010-09-17 26 views
71

Dado el siguiente código XML, ¿Cómo se escribe una consulta XPath para tirar de los nodos en los que existe el atributo foo ?:XPath: ¿Cómo comprobar si existe un atributo?

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

Respuesta

118

corto y dulce:

//*[@foo] 

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

+0

no funciona en IE –

+0

Esto no funciona para mí en PHP 7.0.17. –

8

Si utiliza y XPath, esto tal vez puede ayudarle a:

count(//*[@foo]) 

se volverá recuento de nodo/niño que tiene atribuir foo

19

utilizar la siguiente expresión XPath

//*[boolean(@foo)] 
+1

gracias. ¡Este funciona en IE! –

Cuestiones relacionadas