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



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因