문제

Given an XDocument instance, how can I easily get a TextReader that represents that instance?

The best I've been able to come up with is something like this (where xml is an XDocument instance):

var s = new MemoryStream();
var sw = new StreamWriter(s);

xml.Save(sw);

sw.Flush();
s.Position = 0;

TextReader tr = new StreamReader(s);

However, this seems a little clunky, so I was wondering if there's an easier way?


Edit

The above example is equivalent to converting the entire instance to an XML string and then create a TextReader over that string.

I was just wondering whether there's a more stream-like way to do it than reading the entire contents into memory.

도움이 되었습니까?

해결책

  TextReader tr = new StringReader(xml.ToString());

Kindness,

Dan

다른 팁

I haven't tried it, but there is a Method XNode.WriteTo(XmlWriter). You could pass it a XmlTextWriter to get a textual representation. This probably will take somewhat more code to write, but it should be more "stream-like" as you requested :-)

[Edit:] Even easier: There's a method XNode.CreateReader() which gives you an XmlReader. You'll just have to handle the conversion to text yourself.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top