Inserimento di un nuovo nodo nel documento html in c #

c# html-agility-pack

Domanda

Sto cercando di inserire un nuovo nodo nel documento usando htmlagilitypack. Sto leggendo il documento dallo stream, inserisco il nodo e poi restituisco il documento come oggetto 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: il nuovo nodo (img) non sta inserendo. Il mio contenuto footer è andato se sto usando questo codice e se ho appena letto il documento dal flusso e restituito come un FileContentResult allora tutto perfetto. Voglio sapere qual è il problema con questo codice o dove sto sbagliando?

Risposta popolare

Ho trovato lo stesso problema, l'ho risolto passando l'oggetto clone. basta modificare la linea

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

a

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché