¿Cómo puedo conseguir con facilidad un TextReader de un XDocument?
-
25-09-2019 - |
Pregunta
Dada una instancia XDocument, ¿cómo puedo conseguir con facilidad un TextReader que representa esa instancia?
El mejor que he podido llegar a algo como esto (donde xml
es una instancia XDocument):
var s = new MemoryStream();
var sw = new StreamWriter(s);
xml.Save(sw);
sw.Flush();
s.Position = 0;
TextReader tr = new StreamReader(s);
Sin embargo, esto parece un poco torpe, así que me preguntaba si hay una manera más fácil?
Editar
El ejemplo anterior es equivalente a la conversión de toda la instancia a una cadena XML y luego crear un TextReader sobre esa cadena.
Me estaba preguntando si hay una corriente más parecido manera de hacerlo que leer todo el contenido en la memoria.
Solución
TextReader tr = new StringReader(xml.ToString());
La bondad,
Dan
Otros consejos
Yo no lo he probado, pero no es un método XNode.WriteTo(XmlWriter)
. Se podría pasarle un XmlTextWriter
para obtener una representación textual. Esto probablemente tomará un poco más código
a escribir, pero debería ser más "corriente-como" como usted pidió: -)
[Editar:] Aún más fácil: Hay una XNode.CreateReader()
método que le da una XmlReader
. Usted sólo tiene que manejar la conversión de texto a sí mismo.