我正在使用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/

10-11 02:04