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

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

有帮助吗?

解决方案

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

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top