2009-10-21 98 views
2

如何將FOR XML PATH存儲過程的結果寫入內存而不是磁盤上的文件?將XML寫入內存而不是磁盤

的做事方式電流:

private void GetChartData(string OC_Ttl1, string OC_Ttl2, string OC_OL31) 
{ 
    OC_Ttl_1 = OC_Ttl1; 
    OC_Ttl_2 = OC_Ttl2; 
    OC_OL3_1 = OC_OL31; 
    //Output xml 
    DataSet orgDataSet = new DataSet(); 
    orgDataSet.ReadXml(cmd_Org.ExecuteXmlReader(), XmlReadMode.Auto); 
    orgDataSet.WriteXml("InputXMLFiles/" + OC_OL3_1.Replace(" ", 
     "_").Replace("/", "-") + ".xml"); 
} 

寫入到磁盤文件的其它方法再操作上相反的,我想有這個方法返回的XML來memeory。

我認爲這將是遠遠高於寫入磁盤快....

+0

(回覆評論) – 2009-10-21 17:39:08

回答

4

您有一個XmlReader - 你可以做所有各種各樣的事情。例如

XmlDocument doc = new XmlDocument(); 
using(XmlReader xr = cmd_Org.ExecuteXmlReader()) { 
    doc.Load(xr); 
} 
// TODO: play with "doc" with xpath etc 
+0

謝謝馬克。我不確定這對我目前的情況有什麼幫助。溫柔,我是一個.Net新手..... – MrBliz 2009-10-21 15:59:30

+0

對不起,延遲;我在火車上。一個'XmlReader'實質上是一個到輸入xml的「管道」。通過將其加載到'XmlDocument'之類的東西中,您可以訪問完整的DOM對象模型,並可以調查xml。如果沒有 - 請說明你想要對數據做什麼? – 2009-10-21 17:37:45

+0

謝謝Marc。在將XML數據寫入磁盤的那一刻,然後調用另一個方法對數據執行XSLCompiledTransform,以將其從平面xml文檔轉換爲分層文檔。該數據然後寫入磁盤上的xml文件。 然後調用另一個方法來執行另一個將xml輸出到html的Xsl轉換。 昨天耽誤女友生日的道歉。 – MrBliz 2009-10-23 09:22:25

1

DataSet.WriteXml有很多重載的 - 你可以寫一個流(包括MemoryStream)和作家(包括StringWriter)。假設你真的想要通過DataSet - 如果你很高興直接獲取XML而不使用DataSet,那麼就使用Marc的建議。

1

您可以調用寫入流的WriteXml的重載,並使用MemoryStream,儘管您可能意味着要將XML作爲大長字符串。

相關問題