Viele Daten möchte man schnell und unkompliziert abspeichern und wieder in das Programm laden.
Das .NET Framework bietet hierfür unter anderem die Klasse XmlSerializer im Namespace System.Xml.Serialization an.

Der erste Schritt ist natürlich – wie immer – den Namespace einzubinden:

  using System.Xml.Serialization; 

Danach erstellen wir eine Klasse d.h. Bauplan für die zu serialisierenden Objekte:
In meinem Beispiel habe ich jetzt eine Klasse, welche zwei Attribut (Properties) hält.
Mit dem ersten Konstruktor kann ich die Werte direkt zuweisen.
Der zweite Konstruktor wird für die XMLSerialisierung benötigt. Dieser wird vom XMLSerializer aufgerufen.

   
public class User   {    
   
     public string name { get; set; }        
     public int index { get; set; }      

     public User(string name, int index) {          
         this.name = name;      
         this.index = index; 
     }

     public User() { 
 
     }   
} 

Des „schwerste Schritt ist jetzt eigentlich schon geschafft.

Jetzt erstellen wir ein Objekt der Klasse User und füllen die Properties.

 User currentuser = new User("Fabian",1); 

Eine Liste von Objekten (List<User>) zu serialisieren ist natürlich auch möglich und vom Prinzip her identisch.

Nun erstellen zum eigentlichen Thema, der Serialisierung:
Wir erstellen nun ein Objekt der Klasse XmlSerializer:

  XmlSerializer xmlserializer = new XmlSerializer(typeof(User)); 

Hier übergeben wir dem XML-Serialisierer um welche Art von Objekt (typeof()) es sich handelt.
Hier füllen wir in unserem Beispiel typeof(User) ein, bei einer Liste von unserem Objekt typeof(List<User>).

Nun benötigen wir zum Speichern von Dateien auf der Festplatte einen FileStream:

 FileStream str = new FileStream(@"C:\User\xyz\myXMl.xml", FileMode.Create); 

Als Parameter übergeben wir den Speicherpfad und die Option, die dem FileStream sagt, dass er eine Datei erstellen (Create) soll.

Anschließend führen wir die Serialisierung durch:

  xmlserializer.Serialize(str,currentuser); 

Wir übergeben dem XMLSerializier-Objekt hier den den FileStream und unser User-Objekt (currentuser).
Der Serialisierer kümmert sich um den Rest, also Serialisierung und Abspeichern etc.

Zum Schluss einfach den FileStream schließen:

 str.Close(); 

Voilà wir haben unser serialisiertes Objekt auf der Fesplatte. Die Datei sollte in etwa so aussehen:

 <?xml version="1.0" ?> 
- <User>
    <name>Fabian</name> 
    <index> 1 </index>
  </User>