我正在使用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();
}
答案 0 :(得分:7)
尝试
memoryStream.Seek(0, System.IO.SeekOrigin.Begin)
在创建StreamReader
并致电ReadToEnd()
流指针可能会被Save
方法留在流的末尾(组件执行此操作的最佳做法是 - 如果您想要追加更多数据因此,当你拨打ReadToEnd
时,它已经在最后,没有任何内容被读取。