Insertar nuevo nodo en el documento html en c #

c# html-agility-pack

Pregunta

Estoy intentando insertar un nuevo nodo en el documento utilizando htmlagilitypack. Estoy leyendo el documento del flujo, inserto el nodo y luego devuelvo el documento como un objeto FileContentResult:

HtmlDocument ndoc = new HtmlDocument();
ndoc.Load(stream);

HtmlNode usern = HtmlNode.CreateNode("<img .... />");
usern.Attributes.Add("onclick", "javascript:document.location.href='/Home/Index';");
ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern);

using (MemoryStream ms = new MemoryStream())
{
   ndoc.Save(ms);
   ms.Seek(0, System.IO.SeekOrigin.Begin);
   fileBytes = ms.ToArray();
}

FileContentResult file = File(fileBytes, "text/html");
return file;

Problema: el nuevo nodo (img) no se está insertando. Mi contenido del pie de página se ha ido si estoy usando este código y si acabo de leer el documento de la transmisión y regresar como FileContentResult, entonces todo es perfecto. Quiero saber cuál es el problema con este código o dónde estoy haciendo un error.

Respuesta popular

Encontré el mismo problema, lo resolví pasando el objeto de clonación. solo modifica la linea

ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern);

a

ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern.CloneNode(true));


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é