在c#中的html文档中插入新节点

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));


Related

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow