¡Tengo un verdadero dolor de cabeza en esta etapa un viernes! Estoy tratando de agregar un HtmlNode a otro usando InsertAfter(). Puedo ver el nodo refChild con id de migas de pan cuando rpint a la consola, pero obtengo el siguiente error:¿Cómo debo usar HTMLAgilityPack AppendNode?
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
Mi código es:
HtmlWrapper.InsertAfter(ContentNode, HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']"));
Y como se mencionó he impreso a cabo tanto HtmlWrapper y HtmlWrapper.SelectSingleNode ("// div [@ id = 'breadcrumb']") a la consola y pueden ver el nodo en la pantalla. ¿Alguna idea sobre dónde me estoy equivocando aquí?
Gracias, Denis
Eso no funcionó al principio pero elevé mi selector unos niveles y finalmente apunté a un elemento secundario del nodo HtmlWrapper. ¿Cómo sabías que necesitaba un niño de manera específica y no un descendiente? –
@Denis: encontró la fuente a través de google para HtmlNodeCollection InsertAfter, notó que el miembro al que se indexaba se llamaba '_childNodes', adivinado :) – AakashM
El truco aquí es hacer lo siguiente: nodeToInstertBefore.ParentNode.InsertBefore (newNode, nodeToInsertBefore) No es muy bueno, pero funciona :) – Philippe