Как сохранить HtmlDocument в памяти? Html Agility Pack

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 , он уже находится на конец, и ничего не читается.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему