C # htmlagilitypack XPath Ayuda

c# html-agility-pack xpath

Pregunta

Tengo esta expresión xpath que no funciona

"//div[child[0]::h4[text()[contains(.,'Dir')]]]/a"

Para analizar este html:

<div class="txt"> 
      <h4 class="c1"> 
        Dir
      </h4> 
    <a  href="/name/myname/">Bob</a>
</div> 

Estoy tratando de llegar al nodo de enlace (a). Hay otras etiquetas html en el documento con la misma jerarquía div / h4, con la única diferencia de ser el texto interno de la etiqueta h4. Entonces, ¿cómo verifico que la clase div (1) tenga un nodo subh4 con texto interno "dir" Y (2) obtenga el primer nodo de enlace (a)? No asuma que el enlace es el próximo hermano de h4.

Respuesta aceptada

¿No podrías usar este xpath?

"//div[h4[contains(text(),'Dir')]]/a"

child[0] no es un eje de AFAIK válido, por lo que falla.

No sé si esto solo satisfaría sus condiciones sin ver un ejemplo más completo de HTML. Pero esto ciertamente funciona para este.

Si es posible que haya varios elementos h4 dentro del div y que solo quieras verificar el primero:

"//div[h4[1][contains(text(),'Dir')]]/a"

Respuesta popular

¿Cómo verifico que la clase div (1) tenga un nodo subh4 con texto interno "dir" Y (2) obtenga el primer nodo de enlace (a)

utilizar:

"//div[@class='txt' and h4[contains(.,'Dir')]]/a[1]"


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é