質問

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を長い文字列として使用することもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top