将XML写入内存而不是磁盘

时间:2009-10-21 15:50:41

标签: c# .net xml for-xml

如何将FOR XML PATH存储过程的结果写入内存而不是磁盘上的文件?

当前的做事方式:

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返回到记忆中,而不是将文件写入磁盘然后操作其他方法。

我认为这比写入磁盘要快得多....

3 个答案:

答案 0 :(得分:4)

你有一个XmlReader - 你可以做所有种类的事情。例如

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

答案 1 :(得分:1)

DataSet.WriteXml有很多重载 - 您可以写入流(包括MemoryStream)和编写器(包括StringWriter)。这假设你真的想通过DataSet - 如果你很高兴直接获取XML而不使用DataSet,那么只需使用Marc的建议。

答案 2 :(得分:1)

您可以调用写入流的WriteXml的重载,并使用MemoryStream,尽管您可能希望将XML作为一个很长的字符串。