Serializzazione xml di una lista di oggetti di tipo personalizzato
Mi sembra una buona idea definire anticipatamente questi due concetti.
Partiamo dalla serializzazione:
In informatica, la serializzazione è un processo per salvare un oggetto in [...] un file [...] in forma binaria o può utilizzare codifiche testuali (ad esempio il formato XML) direttamente leggibili dagli esseri umani. Lo scopo della serializzazione è di trasmettere l’intero stato dell’oggetto in modo che esso possa essere successivamente ricreato nello stesso identico stato dal processo inverso, chiamato deserializzazione.
Il concetto è semplice quanto efficace se associato al linguaggio di markup XML:
[...] è un metalinguaggio utilizzato per creare nuovi linguaggi, atti a descrivere documenti strutturati.
Quest’altro è invece un po’ più complicato, ma definiamo il nostro obiettivo e procediamo con un esempio.
Supponiamo di avere a disposizione, all’interno dela nostra applicazione, una lista di istanze appartenenti ad un tipo da noi definito come in questo esempio:
1: //definizione tipo a livello di classe:
2:
3: public struct messaggio {
4: public string mittente, destinatario, oggetto, testo;
5: }
6:
7: //creazione della lista di oggetti del tipo definito
8:
9: List<messaggio> lista = new List<messaggio>();
10: messaggio m;
11:
12: //le seguenti istruzioni verranno eseguite più volte
13: //modificando i valori dei campi in modo da riempire
14: //adeguatamente la lista
15:
16: m.mittente = "Antonio";
17: m.destinatario = "Bruno";
18: m.oggetto = "promemoria";
19: m.testo = "ricordati l'appuntamento per le ore 14:00";
20: lista.Add(m);
Una volta concluso il lavoro di riempimento della lista, ipotizziamo di voler salvare il risultato composto da struttura e contenuto di essa, in un file XML. Come fare?
Ecco la soluzione:
1: XmlSerializer s = new XmlSerializer(typeof(List<messaggio>));
2: TextWriter tw = new StreamWriter("messaggi.xml");
3: s.Serialize(tw, lista);
4: tw.Close();
Da notare che costruttore del serializzatore xml va fornito come parametro in ingresso il tipo di dato che dovrà poi serializzare e che è possibile utilizzare un semplice StreamWriter per creare il file in quanto presenta una codifica in tutto simile a quella dei file di testo.
Il nostro file “messaggi.xml”, se aperto con un qualsiasi browser, dovrà risultare simile a questo d’esempio:
![]() |









