Come posso salvare HtmlDocument in memoria? Html Agility Pack

c# html-agility-pack

Domanda

Sto utilizzando HTML Agility Pack per analizzare e documenti HTML, apportare una modifica a un nodo e quindi salvare il documento HTML. Vorrei salvare il documento in memoria in modo da poter scrivere l'HTML come stringa più avanti nell'applicazione. La mia attuale implementazione restituisce sempre una stringa == "". Posso vedere che l'oggetto HtmlDocument non è vuoto durante il debug. Qualcuno può fornire qualche intuizione?

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

Risposta accettata

Provare

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

Prima di creare lo StreamReader e chiamare ReadToEnd()

È probabile che il puntatore del flusso venga lasciato alla fine dello stream con il metodo Save (è consigliabile che un componente ReadToEnd questa operazione, nel caso in cui si desideri aggiungere più dati allo stream), quindi quando si chiama ReadToEnd , è già al fine e niente viene letto.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché