Wie kann ich leicht einen Textreader von einem XDocument bekommen?
-
25-09-2019 - |
Frage
Da eine XDocument-Instanz, wie kann ich leicht einen Textreader bekommen, dass diese Instanz darstellt?
Das Beste, was ich habe in der Lage zu kommen mit so etwas wie diesem (wo xml
ist eine XDocument-Instanz):
var s = new MemoryStream();
var sw = new StreamWriter(s);
xml.Save(sw);
sw.Flush();
s.Position = 0;
TextReader tr = new StreamReader(s);
Dies scheint jedoch ein wenig klobig, so dass ich mich gefragt, ob es ein einfacherer Weg?
Bearbeiten
Das obige Beispiel entspricht die gesamte Instanz in eine XML-Zeichenfolge zu konvertieren und dann einen Textreader über diese Zeichenfolge erstellen.
Ich frage mich, ob es eine mehr Strom artig es als das Lesen Sie den gesamten Inhalt in den Speicher zu tun.
Lösung
TextReader tr = new StringReader(xml.ToString());
Güte,
Dan
Andere Tipps
Ich habe es nicht ausprobiert, aber es gibt eine Methode XNode.WriteTo(XmlWriter)
. Man könnte es eine XmlTextWriter
passieren eine Textdarstellung zu erhalten. Dies wird wahrscheinlich nimmt etwas mehr Code
zu schreiben, aber es sollte mehr "stream-like", wie Sie angefordert: -)
[Edit:] Noch einfacher: Es gibt eine Methode XNode.CreateReader()
, die Ihnen eine XmlReader
gibt. Sie müssen nur die Umwandlung handhaben müssen, um sich in Text.