给定一个XDocument实例,我该如何轻松获取表示该实例的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。
我只是想知道是否有更像流的方式来做到这一点,而不是将整个内容读入内存。
马克 - 我想到我有时候会在某些API想要写入流的情况下使用“流逆变器”,我需要从它读取(即对于ActionResult)。这可以用来制作一个“文本写入器反相器”,它基本上可以通过'XDocument.Save'给你真正的流式访问,但缺点是它需要一个额外的线程来运行。这会帮助你吗? – Aaronaught 2010-04-09 17:23:30
@Aaronaught:谢谢,但这可能太多了。出于好奇,我主要问这个问题。在我目前的问题中,我希望在应用程序启动时解析一小段XML,所以我可以一劳永逸地加载整个文档。 – 2010-04-09 17:26:50
Alrighty,我想你是试图通过网络发送它或是发生这种情况。我很好奇为什么你需要这样做,你是否使用只能接受“TextReader”的XML API? – Aaronaught 2010-04-10 00:22:39