Ich versuche nur zu deserialisieren und dann, wenn mein Dialog wieder schließt, eine XML-Datei in meiner WPF-App serialisieren. Nun, das funktioniert die meiste Zeit, aber manchmal sind einige Zeichen in meiner Datei komplett verloren, sie verschwinden einfach und machen die Datei unbrauchbar. Mein Code:XMLSerializer zerstört Teile meiner Datei, warum?
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)
{
//...
}
}
Meine XML-Datei wie folgt aussieht etwas vor und nach:
<?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>
Nach:
<?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>
Können Sie den Klassencode 'MyModel' ausgeben? –
Sind Sie sicher, dass Sie das korrekte Xml nachher eingefügt haben? Schließen hat kein übereinstimmendes Start-Tag. – loopedcode
Wissen Sie, welche Zeichen dabei verloren gehen? Abgesehen von dem fehlenden Anfangs-Tag sehe ich keine Änderungen in der Vorher- und Nachherzeit. Könnten Sie versuchen, ungültige XML-Zeichen zu senden? – counterflux