¿Cómo debo usar HTMLAgilityPack AppendNode?

c# html-agility-pack screen-scraping

Pregunta

¡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 la identificación de las migajas de pan cuando lo imprimo en la consola pero sigo recibiendo el siguiente error:

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 he mencionado, he impreso HtmlWrapper y HtmlWrapper.SelectSingleNode ("// div [@ id = 'breadcrumb']") en la consola y puedo ver el nodo en la pantalla. ¿Alguna idea sobre dónde me voy mal aquí?

Gracias denis

Respuesta aceptada

Desde un examen muy breve de la fuente, parece que InsertAfter quiere que refChild sea ​​un hijo directo del nodo en el que invoca InsertAfter . Dado que está buscando todo el eje descendente (con // ) para su nodo div , es posible que el nodo real que pase como refChild no sea un hijo directo de HtmlWrapper .

Intente HtmlWrapper.SelectSingleNode("//div[@id='breadcrumb']") en una variable, y luego invocar InsertAfter en su ParentNode .



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué