Я просто пытаюсь десериализоваться, а затем, когда мой диалог закрывается, снова сериализуем XML-файл в моем приложении WPF. Ну, это работает большую часть времени, но иногда некоторые персонажи в моем файле полностью потеряны, они просто исчезают, что делает файл непригодным. Мой код:XMLSerializer уничтожает части моего файла, почему?
public static void WriteXML(MyModel MyModel)
{
try
{
XmlSerializer serializer = new XmlSerializer(typeof(MyModel));
using (var stream = new FileStream(fileName, FileMode.OpenOrCreate))
{
serializer.Serialize(stream, MyModel);
}
}
catch (Exception e)
{
//...
}
}
Мой файл XML выглядит как это до и после:
<?xml version="1.0"?>
<MainModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Main>
<SomeModel>
<ID>1</ID>
<Name>Af</Name>
<SomeMonth>February</SomeMonth>
<Level>10</Level>
<Out>120</Out>
<Hyb>true</Hyb>
</SomeModel>
<SomeModel>
<ID>2</ID>
<Name>Alm</Name>
<SomeMonth>March</SomeMonth>
<Level>5</Level>
<Out>90</Out>
<Hyb>true</Hyb>
</SomeModel>
</Main>
</MainModel>
После:
<?xml version="1.0"?>
<MainModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SomeModel>
<ID>1</ID>
<Name>Af</Name>
<SomeMonth>February</SomeMonth>
<Level>10</Level>
<Out>120</Out>
<Hyb>true</Hyb>
</SomeModel>
<SomeModel>
<ID>2</ID>
<Name>Alm</Name>
<SomeMonth>March</SomeMonth>
<Level>5</Level>
<Out>90</Out>
<Hyb>true</Hyb>
</SomeModel>
</Main>
</MainModel>
Можете ли вы сбросить код класса MyModel –
Вы уверены, что вставили правильный Xml для после? Закрытие не имеет соответствующего стартового тега. – loopedcode
Знаете ли вы, какие символы потеряны в процессе? Помимо отсутствующего ярлыка открытия, я не вижу никаких изменений в до и после вашего размещения. Может быть, вы пытаетесь отправить недопустимые символы XML? – counterflux