Insertion d'un nouveau noeud dans un document html en c #

c# html-agility-pack

Question

J'essaie d'insérer un nouveau noeud dans le document en utilisant htmlagilitypack. Je lis le document à partir du flux, insère le nœud puis retourne le document en tant qu'objet 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;

Problème: le nouveau noeud (img) n’est pas en cours d’insertion. Le contenu de mon pied de page a disparu si j'utilise ce code et si je viens de lire le document dans le flux et de le retourner en tant que FileContentResult, alors tout est parfait. Je veux savoir quel est le problème avec ce code ou où je me trompe?

Réponse populaire

Je suis tombé sur le même problème, résolu en passant l'objet clone. il suffit de modifier la ligne

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

à

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi