سؤال

وكيف أذهب عن كتابة نتائج 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 كسلسلة طويلة كبيرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top