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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top