C # / Html Errore del pacchetto di agilità "Il valore non può essere nullo. Nome parametro: Origine."

c#-4.0 html-agility-pack

Domanda

Ho già usato il pacchetto di agilità html e ho ottenuto buoni risultati con un po 'di tentativi ed errori. Attualmente sto cercando di usarlo per restituire un set di nodi con un percorso x che ottengo facendo clic con il pulsante destro del mouse su "Copia XPath" in Firefox. Ho fatto qualche ricerca, e vedo che il browser spesso aggiunge "tbody" per i tag tabella. L'ho provato eliminando questo senza fortuna. Ecco l'xpath che mi è stato dato da Firefox:

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]

Usandolo as- si genera l'errore: "Il valore non può essere nullo. Nome del parametro: source. "

Ciò si verifica online:

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]

Continuerò a leggere, nel frattempo se questa è una soluzione facile per chiunque, apprezzerei un suggerimento.

Aggiornamento: questo è il codice attuale:

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]

Risposta popolare

Sembra che questo errore si verifichi su questa linea:

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();

Il fatto è che se il metodo SelectNodes non trova nodi dall'espressione xpath, restituisce null . È possibile trovare ulteriori informazioni in questa risposta a una domanda simile Riferimento NULL HTML Agility Pack . Quindi si chiama un metodo ToList() su un oggetto null che causa effettivamente NullReferenceException .

Per evitare questo controlla la variabile contro null questo modo:

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();



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é