2009-08-24 20 views

Respuesta

108
//node[not(@*)] 

Ese es el XPath para seleccionar todos los nodos denominados "nodo" en el documento sin ningún atributo .

+0

+1 - Esa es la solución más XPath-y. :) – Tomalak

+0

Esto es bueno, pero todavía encuentra '' ¿hay algo que podamos hacer al respecto? –

+0

@MarekCzaplicki consulte la respuesta a continuación para abordar este caso. https://stackoverflow.com/questions/1323755/xpath-how-to-select-nodes-which-have-no-attributes/43910689#43910689 – pip

21
//node[count(@*)=0] 

seleccionará todos <nodo> con cero atributos

3

Para abordar el comentario de Marek Czaplicki y ampliar la respuesta

//node[not(@*) or not(string-length(@*))] 

.... seleccionará todos los elementos de nodo con cero atributos o que tienen atributos que son todas vacías. Si fuera sólo un atributo particular le interesa, más que todos ellos, entonces se podría utilizar

//node[not(@attribute1) or not(string-length(@attribute1))] 

... y esto seleccione todos los elementos de nodo que o bien no tienen un atributo llamado attribute1 O que tienen un atributo attribute1 que está vacío.

Es decir, los siguientes elementos serían recogidos por cualquiera de estas expresiones XPath

<nodes> 
    <node attribute1="aaaa"></node> 
    <node attribute1=""></node> <!--This one --> 
    <node attribute1="bbbb"></node> 
    <node></node> <!--...and this one --> 
</nodes> 
Cuestiones relacionadas