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