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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top