如何从XDocument轻松获取TextReader?

时间:2010-04-09 14:33:33

标签: .net linq-to-xml textreader

在给定XDocument实例的情况下,如何轻松获取表示该实例的TextReader?

我能想到的最好的是这样的(其中xml是一个XDocument实例):

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

xml.Save(sw);

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

TextReader tr = new StreamReader(s);

然而,这看起来有点笨重,所以我想知道是否有更简单的方法?


修改

上面的示例等同于将整个实例转换为XML字符串,然后在该字符串上创建TextReader。

我只是想知道是否有更多类似于流的方式来执行此操作而不是将整个内容读入内存。

2 个答案:

答案 0 :(得分:4)

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

善,

答案 1 :(得分:0)

我没有尝试过,但有一个方法XNode.WriteTo(XmlWriter)。你可以传递一个XmlTextWriter来获得文本表示。这可能需要更多的代码 写,但它应该更像你所要求的“流式”: - )

[编辑:]更简单:有一种方法XNode.CreateReader()可以为您提供XmlReader。您只需要自己处理转换为文本。