htmlagilitypack usando SelectSingleNode

c# html-agility-pack selectsinglenode xpath

Domanda

Ho cercato di ottenere il valore di seguito utilizzando HtmlAgilityPack ma senza successo. Sto usando SelectSingleNode.

Ecco il mio html.

<html>
<body>
    <table>
        <tr><td>One</td></tr>       
    </table>
</body>
</html>

E sotto c'è il codebehind.

HtmlDocument doc = new HtmlDocument();
doc.Load("C:\\test.html");

HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tbody/tr/td");
Console.WriteLine(test.InnerHtml);

La variabile test (HtmlNode) è null.

Come ho intenzione di ottenere il valore all'interno del quale è One .

Risposta accettata

Come mostrato, il tuo campione non ha un nodo tbody quindi il tuo XPath non restituirebbe nodi ( null per SelectSingleNode ).

Difficoltà:

HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td");

Suggerimento per il debug: crea lentamente XPath e controlla ogni risultato / nodo figlio:

     "/html/body/table/" - some children
     "/html/body/table/tbody/"  - null
     "/html/body/table/tr/" - some children
     "/html/body/table/tr/td" - score

Risposta popolare

Dall'uso di XPath in SelectSingleNode: Recupero di singoli elementi da XML, se presente è necessario utilizzare text() :

var test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td/text()");

Inoltre, è necessario rimuovere tbody . Non c'è tbody nel tuo html.



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é