Esempio n. 1
0
        /// <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");
            }
        }
Esempio n. 2
0
        /// <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);
            }
        }