Как я могу сохранить HtmlDocument в память? Html Agility Pack - PullRequest
3 голосов
/ 29 июня 2011

Я использую 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();
    }

1 Ответ

7 голосов
/ 29 июня 2011

Попробуйте

memoryStream.Seek(0, System.IO.SeekOrigin.Begin)

Перед созданием StreamReader и вызовом ReadToEnd()

Вероятно, указатель потока остается в конце потока с помощью метода Save (Лучше всего, чтобы компонент сделал это - в случае вы хотите добавить больше данных в поток), поэтому, когда вы вызываете ReadToEnd, это уже в конце и ничего не читается.

...