题
如何将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作为一个很长的字符串。
不隶属于 StackOverflow