Вопрос

Пытаясь сериализовать XMLDocument в файл. XMLDocument довольно большой; Однако в отладчике я вижу, что свойство InnerxML имеет все в нем все XML-блоб - он там не обрезан.

Вот код, который пишет мой объект XMLDocument к файлу:

// 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 не был замкнут должным образом. Создание!

Другие советы

Вы можете попробовать промыть поток перед закрытием. Если 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