C # htmlagilitypack Aiuto XPath

c# html-agility-pack xpath

Domanda

Ho questa espressione xpath che non funziona

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

Per analizzare questo codice HTML:

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

Sto cercando di ottenere il nodo di collegamento (a). Ci sono altri tag html nel documento con la stessa gerarchia div / h4, con l'unica differenza che è il testo interno del tag h4. Quindi, come faccio a verificare che la classe div (1) abbia un nodo sub h4 con testo interno "dir" AND (2) ottiene il primo nodo di collegamento (a). Non dare per scontato che il collegamento sia il fratello successivo di h4.

Risposta accettata

Non potresti semplicemente usare questo xpath?

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

child[0] non è un asse AFAIK valido, quindi fallisce.

Non so se questo da solo soddisferà le tue condizioni senza vedere un esempio HTML più completo. Ma questo sicuramente funziona per questo.

Se è possibile che ci siano più elementi h4 all'interno del div e vuoi solo controllare il primo:

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

Risposta popolare

Come faccio a verificare che la classe div (1) abbia un nodo sub h4 con testo interno "dir" AND (2) ottiene il primo nodo di collegamento (a)

uso:

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


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché