Pregunta

He intentado varias combinaciones sin éxito. El xpath completo de esos datos es .//*[@id='detail_row_seek_37878']/td El problema es que la parte del número '37878' cambia para cada nodo y, por lo tanto, no puedo usar un foreach para recorrer los nodos. ¿Hay alguna forma de usar un comodín y reducir el xpath a .//*[@id='detail wildcard , en un esfuerzo por omitir la parte del valor absoluto? Estoy usando el paquete de agilidad html en esto.

 HtmlNode ddate = node.SelectSingleNode(".//*[@id='detail_row_seek_37878']/td");

Respuesta aceptada

Extrae la porción que no cambia:

//*[starts-with(@id, 'detail_row_seek')]/td

Técnicas y funciones relacionadas

Para hacer coincidir los elementos cuyo atributo id contiene la cadena _row_ en el séptimo carácter :

//*[substring(@id, 7, 5)='_row_']/td 

Para hacer coincidir los elementos cuyo atributo id contiene el detail_ texto en cualquier posición:

//*[contains(@id, 'detail_')]/td 

Para hacer coincidir los elementos cuyo atributo id finaliza con el texto detail_row_seek :

//*['detail_row_seek' = substring(@id, 
        string-length(@id) - string-length('detail_row_seek') + 1)]/td 


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué