C # HtmlAgilityPack HtmlNodeCollection SelectNodes funktioniert nicht

c# html html-agility-pack selectnodes xpath

Frage

Dies ist die Codezeile, die ich verwende, wenn ich in das Überwachungsfenster schaue, ist 'c' null.

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

Aber wenn ich "c" als das deklariere, zeigt das Überwachungsfenster an, dass es eine gültige HtmlNodeCollection ist

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

Wenn ich dann "c" auf das erste Code-Snippet setze, wird es wieder Null.

Ich weiß, dass der XPath korrekt ist, da ich ihn vom Chrome Inspect Element des Elements, das ich erhalten möchte, erhalten habe.

Beliebte Antwort

SelectNodes gibt null zurück, wenn nichts gefunden wurde.

Sie denken, dass Ihr XPATH in Ordnung ist, weil Sie den mit dem Browser (Chrome, Firefox, usw.) erstellten XPATH verwendet haben, aber leider ist dieser XPATH nicht genau derselbe wie der, den Sie vom Netzwerk erhalten haben (oder eine Datei oder einen rohen Stream) .

Browser verlassen sich auf das intern verwendete In-Memory-DOM, das sich drastisch unterscheiden kann. Deshalb sehen Sie Elemente wie TBODY, die nur in DOM existieren, nicht in Markup (wo sie optional sind).

Also schlage ich vor, dass Sie zu dem String / Stream zurückkommen, den Sie dem Html Agility Pack geben und überprüfen Sie diesen XPATH erneut. Ich wette, es gibt keinen TBODY, für den Anfang.



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow