Comment puis-je obtenir facilement un TextReader d'un XDocument?
-
25-09-2019 - |
Question
Étant donné une instance XDocument, comment puis-je obtenir facilement un TextReader qui représente cette instance?
Le meilleur que je suis en mesure de trouver est quelque chose comme ça (où xml
est une instance XDocument):
var s = new MemoryStream();
var sw = new StreamWriter(s);
xml.Save(sw);
sw.Flush();
s.Position = 0;
TextReader tr = new StreamReader(s);
Cependant, cela semble un peu maladroit, alors je me demandais s'il y a un moyen plus facile?
Modifier
L'exemple ci-dessus est équivalente à convertir l'instance entière à une chaîne XML, puis créer un TextReader sur cette chaîne.
Je me demandais s'il y a un moyen plus comme flux de le faire que de lire le contenu dans la mémoire.
La solution
TextReader tr = new StringReader(xml.ToString());
Gentillesse,
Dan
Autres conseils
Je ne l'ai pas essayé, mais il y a une méthode XNode.WriteTo(XmlWriter)
. Vous pouvez passer un XmlTextWriter
pour obtenir une représentation textuelle. Ce sera probablement prendre le code un peu plus
écrire, mais il devrait être plus « flux comme » comme vous avez demandé: -)
[Edit:] Encore plus facile: Il y a une XNode.CreateReader()
méthode qui vous donne un XmlReader
. Vous aurez juste à gérer la conversion à vous-même texte.