Convertire, serializzare e deserializzare un Xml in una classe ad hoc in C#

Molto spesso ci capita di trasmettere dati in formato json o in xml, ma come possiamo creare velocemente una classe ad hoc per deserializzare e serializzare.

In questo articolo vedremo usando Visual Studio e, poi, un tool esterno come convertire un Xml in una classe, serializzarlo e deserializzarlo.

Generiamo un finto xml :

xmlFake

Come possiamo vedere, è semplicemente una lista di persone.  Creiamo ora l’entità per serializzare e deserializzare.

  1. Copiamo tutto l’xml ed apriamo un nuovo progetto Visual Studio.

2. Creaimo una nuova classe

3. Ora da Modifica selezioniamo Incolla Speciale –> Incolla Xml come classi possiamo farlo anche come un Json.

classePersona

Il Risultato sarà il seguente :

classePersona2

Se non ho particolari esigenze o una classe estremamente complessa non mi piace il modo come viene formattata automaticamente in VS ed ho trovato un tool online che permette facilmente di fare la stessa cosa, ma il risultato è più immediato.
Vediamo come fare :

  1. Andiamo sul sito http://xmltocsharp.azurewebsites.net/
  2. Incolliamo l’xml nella TextArea e clicchiamo su Convert

Ecco il risultato :

convertPersona

Ora, creiamo una classe per serializzare e deserializzare il file xml.

  1. Creiamo una classe che chiameremo HelperXml.
  2. Aggiugiamo due metodi Serialize e Deserialize
public string Serialize(object obj)
{
    string retValue = string.Empty;
    using (StringWriter textWriter = new StringWriter())
    {
       XmlSerializer xml = new XmlSerializer(obj.GetType());
       xml.Serialize(textWriter, obj);
       retValue = textWriter.ToString();
    }
    return retValue;
}

public object Deserialize(string obj)
{
    object retValue = null;
    using (TextReader txtReader = new StreamReader(obj))
    {
       XmlSerializer xml = new XmlSerializer(obj.GetType());
       retValue = xml.Deserialize(txtReader);
    }
    return retValue;
}

Come possiamo notare, in entrambi i metodi non viene specificato il tipo di entità quindi è opportuno utilizzare il cast per ovviare gli errori, sopratutto quando si chiama il metodo Deserialize. Inoltre nella serializzazione, per semplicità, ritorniamo direttamente una stringa.

Ora, non resta che chiamare questi metodi.

Buon lavoro.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...