2009-10-21 52 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作为大长字符串。