Ошибка .net xmlserializer - PullRequest
       8

Ошибка .net xmlserializer

0 голосов
/ 17 ноября 2009

Ошибка в том, что когда класс сериализован, я не получаю ошибку времени выполнения или что-то еще (если не пытаюсь десериализовать). Когда XmlSerializer сериализует мой класс, иногда он добавляет некоторый текст в конец XML. Это часто случается в самом конце:

</RootNode>ootNode>

Иногда это не в конце, а в середине, что-то вроде

<Node Name="MyNode">
    Name="MyNode">
    <Attribute1>Attr</Attribute1>

Я понятия не имею, что может быть причиной этого, но, возможно, это случилось и с некоторыми из вас. Дайте мне знать, если вы, ребята, нашли решение этой проблемы.

Вот мой код:

        using (StreamWriter writer = new StreamWriter(
            File.Open(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(MyClass));

            serializer.Serialize(writer, this);
        }

Спасибо!

1 Ответ

4 голосов
/ 17 ноября 2009

Вы используете неправильный FileMode. OpenOrCreate не будет обрезать содержимое файла, если оно уже существует, что приведет к тому, что ваши новые данные будут наложены поверх старых данных. FileMode.Create будет делать то, что вы хотите.

...