給定一個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