如何将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返回到记忆中,而不是将文件写入磁盘然后操作其他方法。
我认为这比写入磁盘要快得多....
答案 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作为一个很长的字符串。