Come posso facilmente ottenere un TextReader da un XDocument?
-
25-09-2019 - |
Domanda
Dato un esempio XDocument, come posso facilmente ottenere un TextReader che rappresenta quel caso?
Il meglio che ho potuto venire in mente è qualcosa di simile (dove xml
è un'istanza XDocument):
var s = new MemoryStream();
var sw = new StreamWriter(s);
xml.Save(sw);
sw.Flush();
s.Position = 0;
TextReader tr = new StreamReader(s);
Tuttavia, questo sembra un po 'goffo, quindi mi chiedevo se c'è un modo più semplice?
Modifica
L'esempio precedente è equivalente a convertire l'intera istanza di una stringa XML e quindi creare un TextReader su tale stringa.
Mi stavo chiedendo se ci sia un maggiore flusso simile modo per farlo che leggere l'intero contenuto nella memoria.
Soluzione
TextReader tr = new StringReader(xml.ToString());
La gentilezza,
Dan
Altri suggerimenti
Non ho provato, ma c'è un metodo XNode.WriteTo(XmlWriter)
. Si potrebbe passare un XmlTextWriter
per ottenere una rappresentazione testuale. Questo probabilmente ci vorrà un po 'più di codice
Per scrivere, ma dovrebbe essere più "stream-like" come da voi richiesto: -)
[Modifica:] Ancora più facile: c'è un metodo XNode.CreateReader()
che vi dà un XmlReader
. Non vi resta che per gestire la conversione in testo da soli.