C # HtmlAgilityPack HtmlNodeCollection SelectNodes non funziona

c# html html-agility-pack selectnodes xpath

Domanda

Questa è la linea di codice che sto usando, quando guardo nella finestra di controllo, 'c' è nullo.

HtmlNodeCollection c = doc.DocumentNode.SelectNodes("//*[@id=\"content\"]/table/tbody/tr[2]/td/center[2]/b");

Ma quando dichiaro 'c' come questo, la finestra di controllo mostra che è un HtmlNodeCollection valido

HtmlNodeCollection c = new HtmlNodeCollection(doc.DocumentNode.ParentNode);

Se poi setto 'c' al primo snippet di codice, torna ad essere nullo.

So che l'XPath è corretto, poiché l'ho ottenuto dall'elemento Chrome Inspect dell'elemento che voglio ottenere.

Risposta popolare

SelectNodes restituisce null quando non è stato trovato nulla.

Pensi che il tuo XPATH sia ok perché hai usato XPATH di un browser (Chrome, Firefox, ecc.), Ma sfortunatamente, questo XPATH non è esattamente uguale a quello che hai ottenuto dalla rete (o da un file o da un flusso raw) .

I browser si basano sul DOM in memoria che usano internamente e che possono essere radicalmente diversi. Ecco perché vedi elementi come TBODY che esistono solo in DOM, non in markup (dove sono facoltativi).

Quindi, ti suggerisco di tornare alla stringa / stream che dai al pacchetto agilità Html e ricontrollare XPATH. Scommetto che non c'è nessun TROPPO, tanto per cominciare.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow