2012-02-08 18 views
30

Estoy tratando de seleccionar el primer elemento en un conjunto de nodos resultantes después de ejecutar una consulta xpath.obteniendo el primer nodo en el conjunto de resultados xpath

Cuando hago esto:

//dl 

me sale el siguiente conjunto de resultados:

[<dl>​…​</dl>​, <dl>​…​</dl>​] 

¿Cómo puedo obtener la primera? Ninguno de estos trabajos:

//dl[1] 
//dl[position()=1] 

Estoy ejecutando esto en el Inspector web de Chrome.

Respuesta

54

utilizar los siguientes:

(//dl)[1] 

Los paréntesis son significativos. Desea el primer nodo que resulta de //dl (no el conjunto de elementos dl que son el primer elemento secundario de sus elementos primarios (que es lo que //dl[1] (sin parens) devuelve)).

Esto es más fácil de ver cuando uno se da cuenta de que es la abreviatura de // (es decir, se expande plenamente a) /descendant-or-self::node()/ modo que //dl[1] es equivalente a:

/descendant-or-self::node()/dl[1] 

... que es más evidente que no lo desea. En cambio, usted está buscando:

(/descendant-or-self::node()/dl)[1] 
+0

no sabía que eso fuera posible. ¿Qué otros ejemplos hay que pueda hacer con (// dl)? – tipu

Cuestiones relacionadas