Вставка нового узла в документ html в c #

c# html-agility-pack

Вопрос

Я пытаюсь вставить новый узел в документ, используя htmlagilitypack. Я читаю документ из потока, вставляю узел и возвращаю документ в качестве объекта 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;

Проблема: новый узел (img) не вставляет. Мой нижний колонтитул пропал, если я использую этот код, и если я просто прочитаю документ из потока и вернусь как FileContentResult, тогда все будет идеально. Я хочу знать, в чем проблема с этим кодом или где я делаю неправильно?

Популярные ответы

Я столкнулся с той же проблемой, разрешил ее, передав объект клона. просто измените строку

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

в

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


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему