Vous avez vraiment mal à la tête à ce stade le vendredi! J'essaie d'ajouter un HtmlNode à un autre en utilisant InsertAfter (). Je peux voir le nœud refChild avec l'identifiant de la chapelure lorsque je le réimpressionne sur la console, mais le message d'erreur suivant s'affiche:
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
Mon code est:
HtmlWrapper.InsertAfter(ContentNode, HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']"));
Et comme mentionné, j'ai imprimé HtmlWrapper et HtmlWrapper.SelectSingleNode ("// div [@ id = 'breadcrumb']") sur la console et peut voir le nœud à l'écran. Des idées sur où je me trompe ici?
Merci Denis
D'après un examen très superficiel de la source, InsertAfter
souhaite que refChild
soit un enfant direct du noeud sur InsertAfter
vous InsertAfter
. Puisque vous recherchez l’axe descendant complet (avec //
) pour votre nœud div
, il est possible que le nœud que vous passez en tant que refChild
ne soit pas un enfant direct de HtmlWrapper
.
Essayez d'extraire HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']")
dans une variable, puis d'appeler InsertAfter
sur son ParentNode
.