/// <summary> /// Saves and loads an object of type Hund using XML /// </summary> static void SaveAndLoadXML() { Hund meinHund = new Hund(); // ein objekt vom typ hund wird im HEAP erstellt und die adresse in meinHund abgelegt. (referenz) // befüllen der werte. meinHund.Alter = 5; meinHund.Name = "Wuffi"; meinHund.Beine = new List <Bein>(); // ein hund hat als unterobjekt eine liste aus beinen, diese referenz muss natürlich auch befüllt werden. meinHund.Beine.Add(new Bein()); meinHund.Beine.Add(new Bein()); meinHund.Beine.Add(new Bein()); meinHund.Beine.Add(new Bein()); XmlSerializer formXML = new XmlSerializer(typeof(Hund)); //Der Serialisierer wird auf Objekte vom typ Hund festgelegt und erstellt. using (Stream datei = new FileStream("GespeicherterHund.xml", FileMode.Create, FileAccess.Write)) // Datei wird neu erstellt oder falls sie besteht ersetzt, diese datei wird dann mit schreibzugriff geöffnet. { formXML.Serialize(datei, meinHund); // schreibt das objekt meinHund in über den FileStream in die datei } Console.WriteLine("Hund gespeichert"); Hund geladenerHund; // leere referenz für ein objekt vom typ Hund using (Stream datei = new FileStream("GespeicherterHund.xml", FileMode.Open, FileAccess.Read)) // öffnen der datei, falls sie nicht existiert kommt eine fehlermeldung. Es werden nur leserechte angefordert sodass auch andere programm problemlos gleichzeitig lesend zugreifen können { geladenerHund = (Hund)formXML.Deserialize(datei); // liesst das Objekt aus der datei, es muss dann noch zu Hund uminterpretiert werden und die adresse des objektes wird in der Variable abgelegt (referenz) } // vergleicht ob das gelesene und das original identisch sind. if (meinHund.Alter == geladenerHund.Alter && meinHund.Beine.Count == geladenerHund.Beine.Count && meinHund.Beine[3].AnzahlKnochen == geladenerHund.Beine[3].AnzahlKnochen) { Console.WriteLine("Hund wurde erfolgreich geladen"); } }
/// <summary> /// Ablauf des Speicherns eines Hund(Objekt) in eine XML Datei .xml /// XMLSerializer braucht kein [Serializable] aber die Klasse, die gespeichert werden soll, muss public sein /// </summary> static void SaveAndLoadXML() { Hund meinHund = new Hund(); Hund andererHund = new Hund() { Alter = 5, Name = "dodo" }; meinHund.Alter = 5; meinHund.Name = "Wuffi"; meinHund.Beine = new List <Bein>(); meinHund.Beine.Add(new Bein()); meinHund.Beine.Add(new Bein()); meinHund.Beine.Add(new Bein()); meinHund.Beine.Add(new Bein()); XmlSerializer formXML = new XmlSerializer(typeof(Hund)); using (Stream datei = new FileStream("GespeicherterHund.xml", FileMode.Open, FileAccess.Write)) { formXML.Serialize(datei, meinHund); } Console.WriteLine("Hund gespeichert"); Hund meinGeladenerHund; using (Stream myFileStream = new FileStream("GespeicherterHund.xml", FileMode.Open, FileAccess.Read)) { meinGeladenerHund = (Hund)formXML.Deserialize(myFileStream); } if (meinGeladenerHund.Name == meinHund.Name && meinGeladenerHund.Alter == meinHund.Alter) { Console.WriteLine("Der Hund wurde erfolgreich geladen {0}", meinGeladenerHund.Name); } }