Wie kann ich HtmlDocument im Speicher speichern? Html-Agilitätspaket

c# html-agility-pack

Frage

Ich verwende HTML Agility Pack zum Parsen und HTML-Dokument, führe eine Änderung an einem Knoten durch und speichere das HTML-Dokument. Ich möchte das Dokument speichern, damit ich den HTML-Code später in der Anwendung als String ausgeben kann. Meine aktuelle Implementierung gibt immer eine Zeichenfolge == "" zurück. Ich kann sehen, dass das HtmlDocument-Objekt beim Debuggen nicht leer ist. Kann jemand etwas Einblick geben?

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();
    }

Akzeptierte Antwort

Versuchen

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

Bevor Sie den StreamReader und ReadToEnd() aufrufen

Der Stream-Zeiger wird wahrscheinlich am Ende des Streams durch die Save Methode verlassen (es ist die beste Vorgehensweise für eine Komponente, dies zu tun - falls Sie weitere Daten an den Stream anhängen möchten), also wenn Sie ReadToEnd , ist es bereits bei Ende und nichts wird gelesen.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum