Habe an dieser Stelle an einem Freitag wirklich Kopfschmerzen! Ich versuche, einen anderen HtmlNode mit InsertAfter () hinzuzufügen. Ich kann den refChild-Knoten mit der ID von Breadcrumbs sehen, wenn ich ihn an die Konsole rpint, aber immer den folgenden Fehler erhalte:
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 sowohl HtmlWrapper als auch HtmlWrapper.SelectSingleNode ("// div [@ id = 'breadcrumb']") auf der Konsole ausgedruckt und kann den Knoten auf dem Bildschirm sehen. Irgendwelche Ideen, wo ich hier falsch liege?
Danke, Denis
Bei einer sehr oberflächlichen Untersuchung der Quelle sieht es so aus, als ob InsertAfter
will, dass refChild
ein direktes Kind des Knotens ist, auf den Sie InsertAfter
aufrufen. Da Sie die gesamte untergeordnete Achse (mit //
) für Ihren div
Knoten refChild
ist es möglich, dass der tatsächliche Knoten, den Sie als refChild
kein direktes Kind von HtmlWrapper
.
Versuchen Sie, HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']")
in eine Variable zu ziehen und anschließend InsertAfter
auf seinem ParentNode
.