Mit ein paar Zeilen Code ist es möglich komplette Klassen abzuspeichern und wieder zu laden. Dabei wird eine Klasse in einen Stream umgewandelt. Dieser Stream kann dann als XML-Datei gespeichert werden. Der Namespace System.Xml.Serialization stellt uns den XMLSerializer zu Verfügung. Mit Hilfe des Namespaces System.IO erhalten wir den Dateizugriff.
Der erste Code-Ausschnitt zeigt die Klasse selbst.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | public class Kunde { private string _Name; private string _Vorname; private string _PLZ; public Kunde(string Name, string Vorname, string PLZ) { _Name = Name; _Vorname = Vorname; _PLZ = PLZ; } public Kunde() { } public string Vorname { get { return _Vorname; } set { _Vorname = value; } } public string Name { get { return _Name; } set { _Name = value; } } public string PLZ { get { return _PLZ; } set { _PLZ = value; } } } |
Der zweite Code-Ausschnitt zeigt die gespeicherte XML Datei
1 2 3 4 5 6 | <?xml version="1.0"?> <Kunde xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Vorname>Klaus</Vorname> <Name>Michael</Name> <PLZ>08015</PLZ> </Kunde> |
Lesen und Speichern der Klasse als XML Datei
Das Serialisieren und Deserialisieren übernehmen die nachfolgenden Methoden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | private string sPfad = @"c:\kunden-datenbank.xml"; private void Speichern(string Name, string Vorname, string PLZ) { Kunde myKunde = new Kunde(Name, Vorname, PLZ); XmlSerializer ser = new XmlSerializer(typeof(Kunde)); FileStream str = new FileStream(sPfad, FileMode.Create); ser.Serialize(str, myKunde); str.Close(); } private Kunde Lesen() { XmlSerializer ser = new XmlSerializer(typeof(Kunde)); StreamReader sr = new StreamReader(sPfad); Kunde myKunde = (Kunde)ser.Deserialize(sr); sr.Close(); return myKunde; } //Beispiel private void Test1() { Speichern("Michael", "Klaus", "08015"); } private void Test2() { Kunde myKunde = Lesen(); } |
Fazit
Serialisierung gibt dem Entwickler die Möglichkeit Informationen auf einfache Art zu speichern. Kleinere XML Datenbanken können damit ohne großen Aufwand erzeugt und eingelesen werden.
Tags: klasse, objekt, serialisieren, System.Xml.Serialization, xml