开发者

How can I easily get a TextReader from an XDocument?

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 x开发者_C百科ml 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());


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜