Condividi tramite


Usare Visual C# per serializzare un oggetto in XML

Questo articolo fornisce un metodo su come serializzare un oggetto in Extensible Markup Language (XML) tramite 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 il codice XML in un nuovo oggetto.

Questo articolo fa riferimento agli spazi dei nomi della libreria di classi 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 di acquisizione dello stato di un oggetto e la persistenza in qualche modo. .NET Framework include oggetti potenti che possono serializzare qualsiasi oggetto in FORMATO 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 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 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 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 che il progetto funzioni, premere CTRL+F5 per eseguire il progetto. Viene clsPerson creato e popolato un oggetto con i valori immessi. Questo stato viene serializzato in 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 anche serializzare le variabili private di un oggetto o di oggetti figlio, è necessario utilizzare la serializzazione completa.