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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top