Comment sauvegarder HtmlDocument en mémoire? Pack d'agilité HTML

c# html-agility-pack

Question

J'utilise HTML Agility Pack pour analyser un document HTML, modifier un nœud, puis enregistrer le document HTML. Je voudrais enregistrer le document en mémoire afin de pouvoir écrire le code HTML sous forme de chaîne ultérieurement dans l'application. Mon implémentation actuelle retourne toujours une chaîne == "". Je peux voir que l'objet HtmlDocument n'est pas vide lors du débogage. Quelqu'un peut-il donner un aperçu?

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

Réponse acceptée

Essayer

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

Avant de créer StreamReader et d’appeler ReadToEnd()

Le pointeur de flux va probablement être laissé à la fin du flux par la méthode Save (il est recommandé à un composant de le faire, si vous souhaitez ajouter plus de données au flux). Par conséquent, lorsque vous appelez ReadToEnd , il est déjà à fin et rien n'est lu.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi