我正在尝试使用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;问题:新节点没有插入。如果我使用这段代码,如果我只是从流中读取文档并以FileContentResult的形式返回,那么我的页脚内容就消失了,那么一切都很完美。我想知道这个代码有什么问题,或者我做错了什么?
发布于 2012-07-31 05:36:17
看看HTML Agility pack create new HTMLNode。
这说明了如何正确创建新节点。根据我的经验,它们的代码工作得很好。类似于jQuery,一步一步地进行。祝好运!
发布于 2012-07-31 05:39:25
试着改变
HtmlNode usern = HtmlNode.CreateNode("<img .... />");只为img
HtmlNode usern = HtmlNode.CreateNode("<img></img>");再加上这个
ndoc.OptionWriteEmptyNodes = true;发布于 2013-03-15 11:34:37
我遇到了同样的问题,通过传递克隆对象解决了这个问题。只需修改行
ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern);至
ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern.CloneNode(true));https://stackoverflow.com/questions/11733634
复制相似问题