Wie soll ich HTMLAgilityPack appendnode?
-
22-09-2019 - |
Frage
ein echten Kopfschmerzen in diesem Stadium an einem Freitag Got! Ich versuche, eine HtmlNode zu einem anderen mit Insert hinzufügen (). Ich kann den refChild Knoten mit der ID Paniermehl sehen, wenn ich es an die Konsole rpint aber halten die folgende Fehlermeldung erhalten:
System.ArgumentOutOfRangeException: Node "<div id="breadcrumb"></div>" was not f
ound in the collection
Parameter name: node
at HtmlAgilityPack.HtmlNodeCollection.get_Item(HtmlNode node)
at HtmlAgilityPack.HtmlNode.InsertAfter(HtmlNode newChild, HtmlNode refChild)
at MyHome.Tasks.Tasks.DownloadandStoreContent(KeyValueP
air`2 urlPair, String filePath, HtmlNode HtmlWrapper) in C:\Users\denis\Document
s\Visual Studio 2008\Websites\MyHomeV2\MyHome.Tasks\Tasks.cs:line 81
at MyHome.Tasks.Tasks.GenerateContent(String scrape
sSwitch, String filePath) in C:\Users\denis\Documents\Visual Studio 2008\Website
s\MyHomeV2\MyHome.Tasks\Tasks.cs:line 27
at MyHome.Tasks.Program.Main(String[] args) in C:\Users\denis\Documents\Visua
l Studio 2008\Websites\MyHomeV2\MyHome.Tasks\Program.cs:line 87
Mein Code ist:
HtmlWrapper.InsertAfter(ContentNode, HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']"));
Und wie bereits erwähnt habe ich ausgedruckt sowohl HtmlWrapper und HtmlWrapper.SelectSingleNode ( „// div [@ id =‚Brotkrümel‘]“) an die Konsole und den Knoten auf dem Bildschirm sehen. Irgendwelche Ideen auf, wohin ich gehe falsch hier?
Danke, Denis
Lösung
Von einer sehr oberflächlichen Prüfung der Quelle, sieht es aus wie InsertAfter
refChild
will auf ein direkt Kind des Knotens Sie invoke InsertAfter
sein. Da Sie die gesamte Nachkomme Achse suchen (mit //
) für Ihren div
Knoten, ist es möglich, dass der tatsächliche Knoten, den Sie als refChild
passieren ist kein direkte Kind von HtmlWrapper
.
Versuchen HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']")
in eine Variable ziehen, und dann InsertAfter
Berufung auf seine ParentNode
.