Usare Visual C# per serializzare un oggetto in XML

Questo articolo fornisce un metodo su come serializzare un oggetto in Xml (Extensible Markup Language) usando Visual C#.

Versione originale del prodotto: Visual Studio
Numero KB originale: 815813

Riepilogo

Il metodo descritto in questo articolo è utile per rendere persistente lo stato di un oggetto. Il metodo è utile anche per clonare un oggetto de-serializzando nuovamente il codice XML in un nuovo oggetto.

Questo articolo fa riferimento agli spazi dei nomi della libreria di classi di Microsoft .NET Framework seguenti:

  • System.Xml
  • System.Xml.Serialization

Requisiti

Questo articolo presuppone che si abbia familiarità con gli argomenti seguenti:

  • Visual Studio
  • Familiarità generale con XML
  • Familiarità generale con Visual C#

Serializzazione XML

La serializzazione è il processo che consiste nell'acquisire lo stato di un oggetto e renderlo persistente in qualche modo. .NET Framework include oggetti potenti che possono serializzare qualsiasi oggetto in XML. Lo System.Xml.Serialization spazio dei nomi fornisce questa funzionalità.

Seguire questa procedura per creare un'applicazione console che crea un oggetto e quindi serializza il relativo stato in XML:

  1. In Visual C# creare un nuovo progetto applicazione console.

  2. Scegliere Aggiungi classe dal menu Progetto per aggiungere una nuova classe al progetto.

  3. Nella finestra di dialogo Aggiungi nuovo elemento modificare il nome della classe in clsPerson.

  4. Selezionare Aggiungi. Viene creata una nuova classe.

  5. Aggiungere il codice seguente dopo l'istruzione della classe clsPerson pubblica.

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Passare alla finestra del codice per Program.cs in Visual Studio.

  7. void Main Nel metodo dichiarare e creare un'istanza della clsPerson classe :

    clsPerson p = new clsPerson();
    
  8. Impostare le proprietà dell'oggetto clsPerson :

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. Lo Xml.Serialization spazio dei nomi contiene una XmlSerializer classe che serializza un oggetto in FORMATO XML. Quando si crea un'istanza di XmlSerializer, si passa il tipo della classe da serializzare nel relativo costruttore:

    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
    
  10. Il Serialize metodo viene utilizzato per serializzare un oggetto in FORMATO XML. La serializzazione è in overload e può inviare l'output a un TextWriteroggetto , Streamo XMLWriter . In questo esempio l'output viene inviato alla console:

    x.Serialize(Console.Out,p);
    Console.WriteLine();
    Console.ReadLine();
    

Elenco di codice completo

using System;

public class clsPerson
{
    public  string FirstName;
    public  string MI;
    public  string LastName;
}

class class1
{
    static void Main(string[] args)
    {
        clsPerson p=new clsPerson();
        p.FirstName = "Jeff";
        p.MI = "A";
        p.LastName = "Price";
        System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
        x.Serialize(Console.Out, p);
        Console.WriteLine();
        Console.ReadLine();
    }
}

Verifica

Per verificare il funzionamento del progetto, premere CTRL+F5 per eseguire il progetto. Un clsPerson oggetto viene creato e popolato con i valori immessi. Questo stato viene serializzato in FORMATO XML. La finestra della console mostra il codice seguente:

<?xml version="1.0" encoding="IBM437"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <FirstName>Jeff</FirstName>
    <MI>A</MI>
    <LastName>Price</LastName>
</clsPerson>

Risoluzione dei problemi

L'oggetto Xml.Serialization.XmlSerializer esegue solo la serializzazione superficiale. Se si desidera serializzare anche le variabili private di un oggetto o di oggetti figlio, è necessario usare la serializzazione approfondita.