开发者

How can I easily get a TextReader from an XDocument?

开发者 https://www.devze.com 2022-12-26 12:56 出处:网络
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 in

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

精彩评论

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

关注公众号