[C#] Serialize XML - Objekte serialisieren

Drucken
( 2 Votes )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 19.07.2012 Zuletzt aktualisiert am 19.07.2012 Geschrieben von Jonny132
Soll der Benutzer den aktuellen Stand des Programmes speichern und zu einem späteren Zeit wieder laden können, so ist es nützlich wenn man Objekte serialisieren (engl. serialize) kann.

Das .NET - Framework bietet uns dazu die XmlSerializer - Klasse an. Welche ein Objekt in ein lesbares XML Dokument wandelt.

Um diese Funktionalität zu nutzen, sollte man den System.Xml.Serialization - Namensraum per using einfügen.

SerializeToXml - Funktion:
        public string SerializeToXML(object value)
        {
            try
            {
                XmlSerializer x = new XmlSerializer(value.GetType());
                using (MemoryStream ms = new MemoryStream())
                {
                    x.Serialize(ms, value);
                    ms.Position = 0;
                    using (StreamReader sr = new StreamReader(ms, Encoding.Default))
                    {
                        return sr.ReadToEnd();
                    }
                }
            }
            catch(Exception ex)
            {
                return ex.ToString();
            }
        }
Als Übergabeparameter übernehmen wir eine Variable von einem beliebigen Typen. Sprich object.
Mittels GetType() holen wir uns den Typ der Übermittelten Variable und initialisieren damit ein XmlSerializer - Object.

Mittels using wird dann ein MemoryStream erstellt den wir mittels der Serialize() - Methode des XmlSerializer befüllen.
Danach stellen wir die Position des Streams wieder auf 0 um die Serialisierte Klasse mittels StreamReader wieder zu lesen und per Return zurückzugeben.

Läuft etwas schief wird eine Fehlermeldung zurückgeliefert.

Aufrufbeispiel:
        public class TestKlasse
        {
            public string Property1 { get; set; }
            public string Property2 { get; set; }
            public int Property3 { get; set; }

            public TestKlasse()
            {
                Property1 = "";
                Property2 = "";
                Property3 = 0;
            }

            public TestKlasse(string prop1, string prop2, int prop3)
            {
                Property1 = prop1;
                Property2 = prop2;
                Property3 = prop3;
            }
        }


        MessageBox.Show(SerializeToXML(new TestKlasse("Eigenschaft 1", "Eigenschaft 2", 50)));
Ergebnis der Serialisierung

Folgendes Tutorial könnte ebenfalls für Sie interessant sein:
[C#] DeSerialize XML - Objekte aus XML erstellen

    Veröffentlichen Sie ihre Kommentare ...