c# - 如何将 HtmlDocument 保存到内存中? HTML 敏捷包

标签 c# html-agility-pack

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

相关文章:

c# - 错误 - 使用 sdkToolsPath 找不到 al.exe

c# - Datetime.ParseExact() 不起作用

vb.net - 解析 HTML 表格

c# - 使用 HTML Agility Pack 删除带前缀的标签

iphone - “html agility pack” 类似 C/Objective-c/iPhone 的解决方案

c# ProcessCmdKey重载,匹配泛型组合

c# - 在 Entity Framework Core 中启用原始 SQL 日志记录

c# - 调用 EnvDTE80.ErrorItems.item() 时获取 "Index was outside the bounds of the array."

c# - 使用 HTML Agility Pack 查找多个表

c# - 确定 html 节点的样式