質問
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に返すようにしたい。
これは、ディスクに書き込むよりもはるかに高速になると思います...
解決
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
を介して本当に行きたいと仮定している- DataSet
を使用せずにXMLを直接取得したい場合は、Marcの提案を使用してください。
ストリームを書き込む WriteXml
のオーバーロードを呼び出して、 MemoryStream
を使用できますが、XMLを長い文字列として使用することもできます。
所属していません StackOverflow