Neuen Knoten in HTML-Dokument in c # einfügen

c# html-agility-pack

Frage

Ich versuche, einen neuen Knoten mit htmlagilitypack in das Dokument einzufügen. Ich lese das Dokument aus dem Stream, füge den Knoten ein und gebe das Dokument dann als FileContentResult-Objekt zurück:

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;

Problem: Neuer Knoten (img) wird nicht eingefügt. Mein Fußzeileninhalt ist weg, wenn ich diesen Code benutze und wenn ich gerade das Dokument aus dem Stream lese und als FileContentResult zurückkomme dann alles perfekt. Ich möchte wissen, was das Problem mit diesem Code oder wo ich falsch mache?

Beliebte Antwort

Ich stieß auf das gleiche Problem, löste es durch Übergabe des Klonobjekts. Ändere einfach die Linie

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

zu

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


Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow