Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.Xml.Serialization.XmlSerializer aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Die Klasse XmlSerializer erwartet bei ihrer Instanziierung ein Type-Objekt mit dem Typ des Objekts, das serialisiert werden soll. Das weitere Vorgehen ist dann analog zum Binär-Serialisierer; der XML-Serialisierer bietet jedoch mehr Steuerungsmöglichkeiten für die Ausgabeform.
Die Serialize()-Methode in der Klasse XmlSerializer akzeptiert als Ausgabestrom wahlweise ein Objekt des Typs Stream, TextWriter oder XMLWriter.
Serialisierung in XML-Datei
In der Hilfsroutine xml_serialize() ist der Ausgabestrom ein StreamWriter, eine Unterklasse von TextWriter. Der zweite Parameter der Serialize()-Methode ist das zu serialisierende Objekt.
Programmcodebeispiele Visual Basic .NET (VB.NET)
' --- Serialisieren in XML-Datei
Sub xml_serialize(ByVal obj As Object, ByVal datei As String)
Dim serializer As New XmlSerializer(obj.GetType)
Dim writer As New StreamWriter(datei)
serializer.Serialize(writer, obj)
writer.Close()
out("Objekt wurde gespeichert in " & datei)
End Sub
Programmcodebeispiele CSharp (C#)
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Runtime.Serialization;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Data;
namespace FCLBuch._System_RuntimeSerialization {
// Hilfsfunktionen für Serialisierung
public class SerializationHelper {
public static void Xml_Serialize(object obj, string datei) {
// Serialisieren in XML-Datei
XmlSerializer serializer = new XmlSerializer(obj.GetType());
StreamWriter writer = new StreamWriter(datei);
serializer.Serialize(writer, obj);
writer.Close();
FclOutput.PrintOut("Objekt wurde gespeichert in " + datei);
}
}
}
Hinweise
Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und
PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung
von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B.
Console.WriteLine() einsetzen.
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.Xml.Serialization.XmlSerializer'
Übersicht über den FCL-Namensraum 'System.Xml.Serialization'
.NET & Visual Studio Community Portal