2

如何将 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 返回到 memeory。

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

4

3 回答 3

4

你有一个XmlReader——你可以做各种各样的事情。例如

XmlDocument doc = new XmlDocument();
using(XmlReader xr = cmd_Org.ExecuteXmlReader()) {
    doc.Load(xr);
}
// TODO: play with "doc" with xpath etc
于 2009-10-21T15:53:05.833 回答
1

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

于 2009-10-21T15:58:57.737 回答
1

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

于 2009-10-21T15:59:32.710 回答