C # HtmlAgilityPack HtmlNodeCollection SelectNodes ne fonctionne pas

c# html html-agility-pack selectnodes xpath

Question

C'est la ligne de code que j'utilise, lorsque je regarde dans la fenêtre de surveillance, «c» est nul.

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

Mais quand je déclare 'c' comme ceci, la fenêtre de surveillance indique qu'il s'agit d'un HtmlNodeCollection valide.

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

Si je mets ensuite "c" sur le premier extrait de code, il redevient nul.

Je sais que le XPath est correct, comme je l’ai obtenu de l’élément d’inspection Chrome de l’élément que je souhaite obtenir.

Réponse populaire

SelectNodes renvoie null lorsque rien n'a été trouvé.

Vous pensez que votre XPATH est ok parce que vous avez utilisé un XPATH construit par un navigateur (Chrome, Firefox, etc.), mais malheureusement, ce XPATH n'est pas exactement le même que celui que vous avez obtenu du réseau (ou d'un fichier, ou d'un flux brut) .

Les navigateurs utilisent le DOM en mémoire qu'ils utilisent en interne, ce qui peut être radicalement différent. C'est pourquoi vous voyez des éléments tels que TBODY qui n'existent que dans DOM, pas dans les balises (où ils sont facultatifs).

Donc, je vous suggère de revenir à la chaîne / flux que vous donnez au pack d'agilité HTML et de vérifier à nouveau cette XPATH. Je parie qu'il n'y a pas de TBODY, pour commencer.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi