Beim Serialisieren von Objekten im XML-Format legen Sie in den Anwendungseinstellungen den Pfad fest, unter dem die Datei mit den Daten gespeichert werden soll. Nach dem Speichern kann man dort mit einem Text-Editor bequem kontrollieren, ob die Objekte richtig im XML-Format gespeichert wurden. Wenn das gut geklappt hat, sollte doch auch das Laden klappen.
Allerdings kann es dabei zu einem Fehler kommen, die man nicht leicht findet. Meistens ist in einem solchen Fall mit einer InvalidCastException zu rechnen:
Zuvor kann aber auch eine InvalidOperationException
auftreten.
In beiden Fällen werden keine Objekte aus den vorliegenden XML-Daten erzeugt. Das merkt man dann schon. 🙂
Wichtig ist, dass Sie beim Deserialisieren der Daten angeben, was in der Datei zuvor gespeichert wurde. Also genauer, Sie müssen angeben, von welcher Klasse die Objekte sind, die in der XML-Datei stecken. Im Beispiel mit der Fehlermeldung wurden in der Datei Termin.xml
die Termine gespeichert – also Objekte der Klasse Termin
. Beim Laden sollen aus dieser Datei aber die Aufgaben (Objekte der Klasse Aufgabe
) geladen werden.
Nun findet das System in der Datei keine Aufgaben und zeigt deshalb einen Fehler. Richtig müsste die Zeile mit der Deserialisierung deshalb so lauten:
objXmlSerializer = New XmlSerializer(GetType(List(Of Termin)))
So sollte es funktionieren. Weiterhin viel Spaß!