5

给定一个 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。

我只是想知道是否有比将整个内容读入内存更类似于流的方式。

4

2 回答 2

4
  TextReader tr = new StringReader(xml.ToString());
于 2010-04-09T14:38:35.717 回答
0

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

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

于 2010-04-09T14:56:20.013 回答