Serialisieren bzw. Deserialisieren von Objekten mit dem XmlSerializer


Wenn man ein Objekt mit C# und  XmlSerializer serialisiert, dann erhält man das serialisierte Objekt in einer XML Struktur als String zurück. Außerdem ist es möglich dieses XML Dokument über den XmlSerializer auch wieder zu deserialisieren und wieder das passende Objekt zu erhalten.

Ein einfacher Weg dies umzusetzen, stellen die folgenden drei Funktionen dar. Hier kann ein beliebiges “einfaches” Objekt von einem beliebigen Typ übergeben werden und serialisiert bzw. deserialisiert werden. Dabei handelt es sich nur um eine beispielhafte Umsetzung, um zu verdeutlichen wie einfach es sein kann ein Objekt in XML umzuwandeln.

/// <summary>
/// serialisieren der Übergebenen Daten
/// </summary>
/// <typeparam name="T">Der Typ der Serialisiert werden soll</typeparam>
/// <param name="obj">Das Objekt welches Serialisiert werden soll</param>
/// <returns>Serialisiertes Objekt als XML-String</returns>
public static string Serialize<T>(T obj)
{
    using (var writer = new StringWriter())
    {
        new XmlSerializer(obj.GetType()).Serialize(writer, obj);
        string xml = writer.GetStringBuilder().ToString();
        return xml;
    }
}

/// <summary>
/// Deserialisieren unseres Übergebenen XML Strings und als ref des Übergebenen Objektes zurückgeben
/// </summary>
/// <param name="xml">Der XML String aus dem das passende Objekt erstellt werden soll</param>
public static void Deserialize<T>(ref T obj, string xml)
{
    XmlSerializer serializer = new XmlSerializer(obj.GetType());
    StringReader reader = new StringReader(xml);
    object deserialized = serializer.Deserialize(reader);
    obj = (T)deserialized;
}

/// <summary>
/// Deserialisieren unseres Übergebenen XML Strings und zurückgeben des passenden Objektes
/// </summary>
/// <param name="xml">Der XML String aus dem das passende Objekt erstellt werden soll</param>
public static T Deserialize<T>(string xml)
{
    T obj = (T)Activator.CreateInstance(typeof(T));
    XmlSerializer serializer = new XmlSerializer(obj.GetType());
    StringReader reader = new StringReader(xml);
    object deserialized = serializer.Deserialize(reader);
    return (T)deserialized;
}
Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s