الكتابة XML إلى الذاكرة بدلا من القرص
سؤال
وكيف أذهب عن كتابة نتائج FOR PATH XML المخزنة في الذاكرة بدلا من ملف على القرص؟
والطريقة الحالية للقيام بهذه الأمور:
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
- إذا كنت سعيدا الحصول على XML مباشرة دون استخدام DataSet
ثم مجرد استخدام الاقتراحات مارك ل
ويمكنك استدعاء الزائد من WriteXml
أن يكتب إلى تيار، واستخدام MemoryStream
، على الرغم من أنك قد يعني أنك تريد XML كسلسلة طويلة كبيرة.