Problemi nell'ottenere childNodes usando HTMLAgilityPack e XPath

c# html-agility-pack xpath

Domanda

Sto cercando di analizzare il seguente codice HTML. Ho bisogno di ottenere il testo interno di tutti i link sotto un tag h4 con il valore "Titolo".

<h4>Title</h4>
    <ul>
         <li>
             <a>One</a>
         </li>
         <li>
             <a>Two</a>
         </li>
         <li>
             <a>Three</a>
         </li>
    </ul>

Posso ottenere l'elemento h4 ok usando il seguente codice:

<h4>Title</h4>
    <ul>
         <li>
             <a>One</a>
         </li>
         <li>
             <a>Two</a>
         </li>
         <li>
             <a>Three</a>
         </li>
    </ul>

Il problema arriva con il tentativo di ottenere i nodi. Ho provato il seguente codice ma nessuno funziona:

<h4>Title</h4>
    <ul>
         <li>
             <a>One</a>
         </li>
         <li>
             <a>Two</a>
         </li>
         <li>
             <a>Three</a>
         </li>
    </ul>

Risposta accettata

Da quello che riesco a raccogliere, penso che non funzioni perché l'xpath che stai usando si aspetta che i nodi siano figli del tuo nodo h4, non l'ho provato e potrebbe mancare nell'interpretazione dei tuoi requisiti ma ...

var links = document.DocumentNode.SelectNodes("//h4[contains(text(),'Title')]/following-sibling::*[1]//a");

Ciò otterrebbe tutti i nodi che si trovano nel primo fratello del nodo h4. Quindi nel tuo esempio HTML, dovrebbe ottenere tutti i nodi all'interno del nodo ul

Spero che questo ti aiuti




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é