سؤال

محاولة التسلسل xmldocument للملف. Xmldocument كبير إلى حد ما. ومع ذلك ، في The Debugger ، أستطيع أن أرى أن خاصية InnerxML تحتوي على كل مجموعة XML - لا يتم اقتطاعها هناك.

إليك الرمز الذي يكتب كائن XMLDOCUMANT الخاص بي إلى ملف:

// Write that string to a file.
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write);
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented});
fileStream.Close();

الملف الذي تم إنتاجه هنا يكتب فقط إلى خط مثل 5،760 - إنه يتم اقتطاعه بالفعل في منتصف العلامة!

أي شخص لديه أي أفكار لماذا هذا سياقت هنا؟

تحديث: لقد وجدت مصدر القضية. لم أكن أغلق كاتب نص XML قبل إغلاق دفق الملف! دو!

هل كانت مفيدة؟

المحلول

لم يتم إغلاق XmlTextWriter بشكل صحيح. woops!

نصائح أخرى

يمكنك محاولة مسح الدفق قبل الإغلاق. إذا كان Autoflush صحيحًا ، فأعتقد أنه يتم مسحه على قرب () على أي حال ، ولكن قد يكون الأمر يستحق اللقطة:

// Write that string to a file. 
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write); 
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented}); 
fileStream.Flush();
fileStream.Close(); 

إنها طريقة الطريق ... بعد طرح السؤال الأصلي ، لكنه ظهر على نتائج Google.

مررت بشيء مشابه اليوم وأردت مشاركة إجابتي (للروح المؤسفة التالية التي تواجه هذا الالتباس).

أنا أستخدم StreamWriter (SW) مع MemoryStream (MS) للحفاظ على البيانات في الذاكرة ومن ثم التخلص من Filestream (FS) على فترات زمنية معينة.

لذلك كنت أفعل

    sw.WriteLine(DateTime.Now.ToString("u").Replace("Z", "") & ":  " & entry)

وبعد كل شيء قيل وفعل

    ms.WriteTo(fs)
    fs.Flush()
    fs.Close()
    ms.Close()

كانت المشكلة أنني لم أكن أتدفق على streamwriter إلى MemoryStream أولاً

تغيير إلى هذا حل مشكلتي.

    sw.Flush()
    ms.WriteTo(fs)
    fs.Flush()
    fs.Close()
    ms.Close()

واجهت هذه القضية اليوم عندما كان الرمز أدناه:

XmlTextWriter writer = new XmlTextWriter("IdP.xml", null);
writer.Formatting = Formatting.Indented;
xmlElement.WriteTo(writer);

تم إصلاح المشكلة عندما غيرتها على النحو التالي:

using (XmlTextWriter writer = new XmlTextWriter("IdP.xml", null))
{
    writer.Formatting = Formatting.Indented;
    xmlElement.WriteTo(writer);
}

نأمل أن يكون هذا مفيد لشخص ما.

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