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:
In Visual C# creare un nuovo progetto applicazione console.
Scegliere Aggiungi classe dal menu Progetto per aggiungere una nuova classe al progetto.
Nella finestra di dialogo Aggiungi nuovo elemento modificare il nome della classe in clsPerson.
Selezionare Aggiungi. Viene creata una nuova classe.
Aggiungere il codice seguente dopo l'istruzione della classe
clsPerson
pubblica.public string FirstName; public string MI; public string LastName;
Passare alla finestra del codice per Program.cs in Visual Studio.
void Main
Nel metodo dichiarare e creare un'istanza dellaclsPerson
classe :clsPerson p = new clsPerson();
Impostare le proprietà dell'oggetto
clsPerson
:p.FirstName = "Jeff"; p.MI = "A"; p.LastName = "Price";
Lo
Xml.Serialization
spazio dei nomi contiene unaXmlSerializer
classe che serializza un oggetto in XML. Quando si crea un'istanza diXmlSerializer
, si passa il tipo della classe da serializzare nel relativo costruttore:System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
Il
Serialize
metodo viene utilizzato per serializzare un oggetto in XML. La serializzazione è in overload e può inviare l'output a unTextWriter
oggetto ,Stream
oXMLWriter
. 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.