2010-09-02 99 views
8

¿Qué consulta de XPATH podría utilizar para obtener los valores de la primera y la tercera etiqueta <td> para cada fila en una tabla html?Cómo obtener datos de tabla de tablas utilizando xpath

La consulta XPATH he utilizado es el uso

/table/tr/td[1]|td[3].

Esto solo devuelve los valores en la primera etiqueta <td> para cada fila en una tabla.

Ejemplo

que se puede esperar para obtener los valores de la sacudida, 19, Jane, 11, Cameron y 32 de la tabla siguiente. Pero solo estoy recibiendo a Bob, Jane, Cameron.

<table> 
<tr><td>Bob</td><td>Male</td><td>19</td></tr> 
<tr><td>Jane</td><td>Feale</td><td>11</td></tr> 
<tr><td>Cameron</td><td>Male</td><td>32</td></tr> 
</table> 
+2

Buena pregunta (1). Vea mi respuesta para otra solución, que puede ser más eficiente. –

Respuesta

3

Trate

/table/tr/td[1]|/table/tr/td[3] 

Recuerdo haber hecho esto en el pasado y lo encontró bastante molesto porque es feo y de largo aliento

+0

respuesta correcta, pero no veo la fealdad. También esto es XPath 1.0, pero en XPath 2.0 podría usar '/ table/tr/(td [1] | td [3])' –

+0

@Alejandro - parece incorrecto. ¿Probablemente querías decir algo como la expresión en mi respuesta? :) –

+0

@Dimitre: la respuesta de jakenoble funciona para mí. También mi expresión XPath 2.0. –

8

@ respuesta de jakenoble:

/table/tr/td[1]|/table/tr/td[3] 

es correcto.

Una expresión XPath equivalente que evita que el operador | (unión) y puede ser más eficiente es:

/table/tr/td[position() = 1 or position() = 3] 
Cuestiones relacionadas