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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top