estoy a programar algunos Perl para utilizar XPath para localizar un elemento particular dentro de un td
table` que se parece a esteexpresión XPath para contener los elementos de un nodo de texto dado
<table>
<tr>
<td>...</td>
<td><font color="white" face="verdana, Helvetica, Arial" size="2">Showing <b>1</b>-<b>100</b> of <b>200</b> total</font></td>
<td>...</td>
<td>...</td>
</tr>
</table>
Lo que quiero es encontrar una td
elemento que tiene un nodo font/text()
que contiene la cadena Showing
.
partidos contains(., "Showing")
Una comparación directa funciona bien:
//td[font/text()="Showing "]
pero quieren utilizar la función XPath para que el partido es más flexible.
He tratado
//td[contains(font/text(), "Showing ")]
pero esto plantea el error
XPath failed due to: A sequence of more than one item is not allowed as the first argument of contains()
y he podido lograr lo que quiero con
//td[font/text()[contains(., "Showing")]]
pero esto es muy feo y yo Estoy esperando algo más conciso. Por favor, ¿alguien puede mejorar esto para mí o quizás confirmar que esta es la mejor y más concisa manera?
más concisa? Usted tiene un xpath que dice "Todos los' td's que tienen una 'fuente' cuyo texto contiene' Showing' "- ¡que es exactamente su enunciado de problema! - ¿Y quieres que sea más conciso? – AakashM
@AakashM: Sí, lo hago. Solo porque es * una * forma de expresar lo que quiero no significa que sea el * más limpio *. No tengo que escribir '//td[font/text()[.="Showing"]] 'así que pensé que podría haber una forma de usar' contains' en lugar de '='. – Borodin
Entonces, ¿por qué crees que la expresión es "muy fea"? Es el que usaría, y esto significa que, al menos que yo sepa, no hay uno más elegante. –