我正在使用HTML Agility Pack解析和HTML文档,对节点进行更改,然后保存HTML文档。我想将文档保存到内存中,以便稍后在应用程序中将HTML作为字符串写出。我当前的实现总是返回一个字符串==“”。我可以看到HtmlDocument对象在调试时不为空。有人可以提供一些见识吗?
private string InitializeHtml(HtmlDocument htmlDocument)
{
string currentUserName = User.Identity.Name;
HtmlNode scriptTag = htmlDocument.DocumentNode.SelectSingleNode("//script[@id ='HwInitialize']");
scriptTag.InnerHtml =
string.Format("org.myorg.application = {{}}; org.myorg.application.init ={{uid:\"{0}\", application:\"testPortal\"}};",currentUserName);
MemoryStream memoryStream = new MemoryStream();
htmlDocument.Save(memoryStream);
StreamReader streamReader = new StreamReader(memoryStream);
return streamReader.ReadToEnd();
}
最佳答案
尝试
memoryStream.Seek(0, System.IO.SeekOrigin.Begin)
在创建
StreamReader
和调用ReadToEnd()
之前流指针很可能会被
Save
方法留在流的末尾(这是组件的最佳做法-如果您想向流中添加更多数据),因此,当您调用ReadToEnd
时,它已经在结束,什么也没读。关于c# - 如何将HtmlDocument保存到内存中? HTML敏捷包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6514006/