XmlSerializer.Serialize Metodo

Definizione

Serializza un oggetto in un documento XML.Serializes an object into an XML document.

Overload

Serialize(XmlWriter, Object)

Serializza l'Object specificato e scrive il documento XML in un file utilizzando il XmlWriter specificato.Serializes the specified Object and writes the XML document to a file using the specified XmlWriter.

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String, String)

Serializza l'oggetto Object specificato e scrive il documento XML in un file mediante l'oggetto XmlWriter, gli spazi dei nomi XML e la codifica specificati.Serializes the specified Object and writes the XML document to a file using the specified XmlWriter, XML namespaces, and encoding.

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String)

Serializza l'oggetto specificato e scrive il documento XML in un file mediante l'oggetto XmlWriter specificato, facendo riferimento agli spazi dei nomi specificati.Serializes the specified object and writes the XML document to a file using the specified XmlWriter and references the specified namespaces and encoding style.

Serialize(XmlWriter, Object, XmlSerializerNamespaces)

Serializza l'oggetto Object specificato e scrive il documento XML in un file mediante l'oggetto XmlWriter specificato, facendo riferimento agli spazi dei nomi specificati.Serializes the specified Object and writes the XML document to a file using the specified XmlWriter and references the specified namespaces.

Serialize(TextWriter, Object, XmlSerializerNamespaces)

Serializza l'oggetto Object specificato e scrive il documento XML in un file mediante l'oggetto TextWriter specificato, facendo riferimento agli spazi dei nomi specificati.Serializes the specified Object and writes the XML document to a file using the specified TextWriter and references the specified namespaces.

Serialize(Object, XmlSerializationWriter)

Serializza l'Object specificato e scrive il documento XML in un file utilizzando il XmlSerializationWriter specificato.Serializes the specified Object and writes the XML document to a file using the specified XmlSerializationWriter.

Serialize(TextWriter, Object)

Serializza l'Object specificato e scrive il documento XML in un file utilizzando il TextWriter specificato.Serializes the specified Object and writes the XML document to a file using the specified TextWriter.

Serialize(Stream, Object)

Serializza l'Object specificato e scrive il documento XML in un file utilizzando il Stream specificato.Serializes the specified Object and writes the XML document to a file using the specified Stream.

Serialize(Stream, Object, XmlSerializerNamespaces)

Serializza l'oggetto Object specificato e scrive il documento XML in un file mediante l'oggetto Stream specificato, che fa riferimento agli spazi dei nomi specificati.Serializes the specified Object and writes the XML document to a file using the specified Stream that references the specified namespaces.

Serialize(XmlWriter, Object)

Serializza l'Object specificato e scrive il documento XML in un file utilizzando il XmlWriter specificato.Serializes the specified Object and writes the XML document to a file using the specified XmlWriter.

public:
 void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o);
public void Serialize (System.Xml.XmlWriter xmlWriter, object o);
member this.Serialize : System.Xml.XmlWriter * obj -> unit

Parametri

xmlWriter
XmlWriter

Il XmlWriter utilizzato per scrivere il documento XML.The XmlWriter used to write the XML document.

o
Object

Object da serializzare.The Object to serialize.

Eccezioni

Si è verificato un errore durante la serializzazione.An error occurred during serialization. L'eccezione originale è disponibile tramite la proprietà InnerException.The original exception is available using the InnerException property.

Esempi

Nell'esempio seguente viene serializzato un oggetto utilizzando un XmlWriter.The following example serializes an object using an XmlWriter.

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml;
using namespace System::Xml::Serialization;

// This is the class that will be serialized.
public ref class OrderedItem
{
public:
   String^ ItemName;
   String^ Description;
   Decimal UnitPrice;
   int Quantity;
   Decimal LineTotal;

   // A custom method used to calculate price per item.
   void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
};

void SerializeObject( String^ filename )
{
   Console::WriteLine( "Writing With XmlTextWriter" );
   XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
   OrderedItem^ i = gcnew OrderedItem;
   i->ItemName = "Widget";
   i->Description = "Regular Widget";
   i->Quantity = 10;
   i->UnitPrice = (Decimal)2.30;
   i->Calculate();

   // Create an XmlTextWriter using a FileStream.
   Stream^ fs = gcnew FileStream( filename,FileMode::Create );
   XmlWriter^ writer = gcnew XmlTextWriter( fs,Encoding::Unicode );

   // Serialize using the XmlTextWriter.
   serializer->Serialize( writer, i );
   writer->Close();
}

int main()
{
   // Write a purchase order.
   SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

// This is the class that will be serialized.
public class OrderedItem
{
   public string ItemName;
   public string Description;
   public decimal UnitPrice;
   public int Quantity;
   public decimal LineTotal;
   // A custom method used to calculate price per item.
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}
 
public class Test{
   public static void Main()
   {
      Test t = new Test();
      // Write a purchase order.
      t.SerializeObject("simple.xml");
   }
 
   private void SerializeObject(string filename)
   {
      Console.WriteLine("Writing With XmlTextWriter");
 
      XmlSerializer serializer = 
      new XmlSerializer(typeof(OrderedItem));
      OrderedItem i = new OrderedItem();
      i.ItemName = "Widget";
      i.Description = "Regular Widget";
      i.Quantity = 10;
      i.UnitPrice = (decimal) 2.30;
      i.Calculate();
      // Create an XmlTextWriter using a FileStream.
      Stream fs = new FileStream(filename, FileMode.Create);
      XmlWriter writer = 
      new XmlTextWriter(fs, Encoding.Unicode);
      // Serialize using the XmlTextWriter.
      serializer.Serialize(writer, i);
      writer.Close();
   }
}
   
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization


' This is the class that will be serialized.
Public Class OrderedItem
    Public ItemName As String
    Public Description As String
    Public UnitPrice As Decimal
    Public Quantity As Integer
    Public LineTotal As Decimal
    
    ' A custom method used to calculate price per item.
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        ' Write a purchase order.
        t.SerializeObject("simple.xml")
    End Sub
        
    Private Sub SerializeObject(ByVal filename As String)
        Console.WriteLine("Writing With XmlTextWriter")
        
        Dim serializer As New XmlSerializer(GetType(OrderedItem))
        Dim i As New OrderedItem()
        With i
            .ItemName = "Widget"
            .Description = "Regular Widget"
            .Quantity = 10
            .UnitPrice = CDec(2.3)
            .Calculate()
        End With
        ' Create an XmlTextWriter using a FileStream.
        Dim fs As New FileStream(filename, FileMode.Create)
        Dim writer As New XmlTextWriter(fs, Encoding.Unicode)
        ' Serialize using the XmlTextWriter.
        serializer.Serialize(writer, i)
        writer.Close()
    End Sub
End Class

<?xml version="1.0"?>
 <OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
   <inventory:ItemName>Widget</inventory:ItemName>
   <inventory:Description>Regular Widget</inventory:Description>
   <money:UnitPrice>2.3</money:UnitPrice>
   <inventory:Quantity>10</inventory:Quantity>
   <money:LineTotal>23</money:LineTotal>
 </OrderedItem>

Commenti

Il metodo Serialize converte i campi pubblici e le proprietà di lettura/scrittura di un oggetto in XML.The Serialize method converts the public fields and read/write properties of an object into XML. Non converte metodi, indicizzatori, campi privati o proprietà di sola lettura.It does not convert methods, indexers, private fields, or read-only properties. Per serializzare tutti i campi e le proprietà di un oggetto, sia pubblici che privati, utilizzare il BinaryFormatter.To serialize all an object's fields and properties, both public and private, use the BinaryFormatter.

Nel parametro xmlWriter specificare un oggetto che deriva dalla classe astratta XmlWriter.In the xmlWriter parameter, specify an object that derives from the abstract XmlWriter class. Il XmlTextWriter deriva dall'XmlWriter.The XmlTextWriter derives from the XmlWriter.

Nota

Il XmlSerializer non può serializzare gli elementi seguenti: matrici di ArrayList e matrici di List<T>.The XmlSerializer cannot serialize the following: arrays of ArrayList and arrays of List<T>.

Vedi anche

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String, String)

Serializza l'oggetto Object specificato e scrive il documento XML in un file mediante l'oggetto XmlWriter, gli spazi dei nomi XML e la codifica specificati.Serializes the specified Object and writes the XML document to a file using the specified XmlWriter, XML namespaces, and encoding.

public:
 void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces, System::String ^ encodingStyle, System::String ^ id);
public void Serialize (System.Xml.XmlWriter xmlWriter, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces, string encodingStyle, string id);
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces * string * string -> unit

Parametri

xmlWriter
XmlWriter

Il XmlWriter utilizzato per scrivere il documento XML.The XmlWriter used to write the XML document.

o
Object

Oggetto da serializzare.The object to serialize.

namespaces
XmlSerializerNamespaces

Istanza di XmlSerializerNamespaces contenente gli spazi dei nomi e i prefissi da utilizzare.An instance of the XmlSerializerNamespaces that contains namespaces and prefixes to use.

encodingStyle
String

Codifica utilizzata nel documento.The encoding used in the document.

id
String

Per i messaggi con codifica SOAP, base utilizzata per generare attributi di ID.For SOAP encoded messages, the base used to generate id attributes.

Commenti

Il parametro ID fornisce la stringa di base utilizzata per creare gli ID SOAP.The id parameter supplies the base string used to create SOAP ids. Per impostazione predefinita, si tratta di "ID1", "id2" e così via.By default, these are "id1", "id2" and so on. Tuttavia, se il parametro è impostato su "MyBase" i valori generati sono "myBaseid1", "myBaseid2" e così via.But if the parameter is set to "myBase" the generated values are "myBaseid1", "myBaseid2" and so on. Questa funzionalità viene utilizzata per creare valori ID univoci nell'intero messaggio SOAP.This functionality is used to create unique id values across the whole SOAP message.

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String)

Serializza l'oggetto specificato e scrive il documento XML in un file mediante l'oggetto XmlWriter specificato, facendo riferimento agli spazi dei nomi specificati.Serializes the specified object and writes the XML document to a file using the specified XmlWriter and references the specified namespaces and encoding style.

public:
 void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces, System::String ^ encodingStyle);
public void Serialize (System.Xml.XmlWriter xmlWriter, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces, string encodingStyle);
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces * string -> unit

Parametri

xmlWriter
XmlWriter

Il XmlWriter utilizzato per scrivere il documento XML.The XmlWriter used to write the XML document.

o
Object

Oggetto da serializzare.The object to serialize.

namespaces
XmlSerializerNamespaces

L'XmlSerializerNamespaces cui fa riferimento l'oggetto.The XmlSerializerNamespaces referenced by the object.

encodingStyle
String

Stile di codifica dell'XML serializzato.The encoding style of the serialized XML.

Eccezioni

Si è verificato un errore durante la serializzazione.An error occurred during serialization. L'eccezione originale è disponibile tramite la proprietà InnerException.The original exception is available using the InnerException property.

Commenti

Quando viene richiamato il metodo Serialize, i campi pubblici e le proprietà di lettura/scrittura di un oggetto vengono convertiti in XML.When the Serialize method is invoked, the public fields and read/write properties of an object are converted into XML. I metodi, gli indicizzatori, i campi privati e le proprietà di sola lettura non vengono serializzati.Methods, indexers, private fields, and read-only properties are not serialized. Per serializzare tutti i campi e le proprietà, sia pubblici che privati, utilizzare il BinaryFormatter.To serialize all fields and properties, both public and private, use the BinaryFormatter.

Utilizzare il parametro xmlWriter per specificare un oggetto che deriva dalla classe astratta XmlWriter, progettata per la scrittura di documenti XML.Use the xmlWriter parameter to specify an object that derives from the abstract XmlWriter class, which is designed to write XML documents. Il XmlTextWriter deriva dall'XmlWriter.The XmlTextWriter derives from the XmlWriter.

Impostare il parametro encodingStyle su "http://schemas.xmlsoap.org/soap/encoding/" per la codifica SOAP versione 1,1; in caso contrario, impostarlo su "http://www.w3.org/2001/12/soap-encoding" per la codifica SOAP versione 1,2.Set the encodingStyle parameter to "http://schemas.xmlsoap.org/soap/encoding/" for SOAP version 1.1 encoding; otherwise, set it to "http://www.w3.org/2001/12/soap-encoding" for SOAP version 1.2 encoding.

Nota

Il XmlSerializer non può serializzare gli elementi seguenti: matrici di ArrayList e matrici di List<T>.The XmlSerializer cannot serialize the following: arrays of ArrayList and arrays of List<T>.

Vedi anche

Serialize(XmlWriter, Object, XmlSerializerNamespaces)

Serializza l'oggetto Object specificato e scrive il documento XML in un file mediante l'oggetto XmlWriter specificato, facendo riferimento agli spazi dei nomi specificati.Serializes the specified Object and writes the XML document to a file using the specified XmlWriter and references the specified namespaces.

public:
 void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces);
public void Serialize (System.Xml.XmlWriter xmlWriter, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces);
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit

Parametri

xmlWriter
XmlWriter

Il XmlWriter utilizzato per scrivere il documento XML.The XmlWriter used to write the XML document.

o
Object

Object da serializzare.The Object to serialize.

namespaces
XmlSerializerNamespaces

L'XmlSerializerNamespaces cui fa riferimento l'oggetto.The XmlSerializerNamespaces referenced by the object.

Eccezioni

Si è verificato un errore durante la serializzazione.An error occurred during serialization. L'eccezione originale è disponibile tramite la proprietà InnerException.The original exception is available using the InnerException property.

Esempi

Nell'esempio seguente viene serializzato un oggetto con un XmlWriter.The following example serializes an object with an XmlWriter. Nell'esempio viene inoltre creato un XmlSerializerNamespaces e vengono aggiunti due spazi dei nomi all'oggetto.The example also creates an XmlSerializerNamespaces and adds two namespaces to the object. Diverse istanze della classe XmlElementAttribute vengono applicate ai membri della classe per specificare lo spazio dei nomi per ogni elemento.Several instances of the XmlElementAttribute class are applied to the class members to specify the namespace for each element.

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml;
using namespace System::Xml::Serialization;

// This is the class that will be serialized.
public ref class OrderedItem
{
public:

   [XmlElement(Namespace="http://www.cpandl.com")]
   String^ ItemName;

   [XmlElement(Namespace="http://www.cpandl.com")]
   String^ Description;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Decimal UnitPrice;

   [XmlElement(Namespace="http://www.cpandl.com")]
   int Quantity;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Decimal LineTotal;

   // A custom method used to calculate price per item.
   void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
};

void SerializeObject( String^ filename )
{
   Console::WriteLine( "Writing With XmlTextWriter" );
   XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
   OrderedItem^ i = gcnew OrderedItem;
   i->ItemName = "Widget";
   i->Description = "Regular Widget";
   i->Quantity = 10;
   i->UnitPrice = (Decimal)2.30;
   i->Calculate();

   // Create an XmlSerializerNamespaces object.
   XmlSerializerNamespaces^ ns = gcnew XmlSerializerNamespaces;

   // Add two namespaces with prefixes.
   ns->Add( "inventory", "http://www.cpandl.com" );
   ns->Add( "money", "http://www.cohowinery.com" );

   // Create an XmlTextWriter using a FileStream.
   Stream^ fs = gcnew FileStream( filename,FileMode::Create );
   XmlWriter^ writer = gcnew XmlTextWriter( fs,gcnew UTF8Encoding );

   // Serialize using the XmlTextWriter.
   serializer->Serialize( writer, i, ns );
   writer->Close();
}

int main()
{
   // Write a purchase order.
   SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

// This is the class that will be serialized.
public class OrderedItem
{
   [XmlElement(Namespace = "http://www.cpandl.com")]
   public string ItemName;
   [XmlElement(Namespace = "http://www.cpandl.com")]
   public string Description;
   [XmlElement(Namespace="http://www.cohowinery.com")]
   public decimal UnitPrice;
   [XmlElement(Namespace = "http://www.cpandl.com")]
   public int Quantity;
   [XmlElement(Namespace="http://www.cohowinery.com")]
   public decimal LineTotal;
   // A custom method used to calculate price per item.
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}
 
public class Test{
   public static void Main()
   {
      Test t = new Test();
   // Write a purchase order.
   t.SerializeObject("simple.xml");
   }
 
   private void SerializeObject(string filename)
   {
      Console.WriteLine("Writing With XmlTextWriter");

      XmlSerializer serializer = 
      new XmlSerializer(typeof(OrderedItem));
      OrderedItem i = new OrderedItem();
      i.ItemName = "Widget";
      i.Description = "Regular Widget";
      i.Quantity = 10;
      i.UnitPrice = (decimal) 2.30;
      i.Calculate();
 
      // Create an XmlSerializerNamespaces object.
      XmlSerializerNamespaces ns = 
      new XmlSerializerNamespaces();
      // Add two namespaces with prefixes.
      ns.Add("inventory", "http://www.cpandl.com");
      ns.Add("money", "http://www.cohowinery.com");
      // Create an XmlTextWriter using a FileStream.
      Stream fs = new FileStream(filename, FileMode.Create);
      XmlWriter writer = 
      new XmlTextWriter(fs, new UTF8Encoding());
      // Serialize using the XmlTextWriter.
      serializer.Serialize(writer, i, ns);
      writer.Close();
   }
}

Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization


' This is the class that will be serialized.
Public Class OrderedItem
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public ItemName As String
    
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public Description As String
    
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public UnitPrice As Decimal
    
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public Quantity As Integer
    
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public LineTotal As Decimal
    
    'A custom method used to calculate price per item.
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        ' Write a purchase order.
        t.SerializeObject("simple.xml")
    End Sub    
    
    Private Sub SerializeObject(ByVal filename As String)
        Console.WriteLine("Writing With XmlTextWriter")
        
        Dim serializer As New XmlSerializer(GetType(OrderedItem))
        Dim i As New OrderedItem()
        With i
            .ItemName = "Widget"
            .Description = "Regular Widget"
            .Quantity = 10
            .UnitPrice = CDec(2.3)
            .Calculate()
        End With
        
        ' Create an XmlSerializerNamespaces object.
        Dim ns As New XmlSerializerNamespaces()
        ' Add two namespaces with prefixes.
        ns.Add("inventory", "http://www.cpandl.com")
        ns.Add("money", "http://www.cohowinery.com")
        ' Create an XmlTextWriter using a FileStream.
        Dim fs As New FileStream(filename, FileMode.Create)
        Dim writer As New XmlTextWriter(fs, New UTF8Encoding())
        ' Serialize using the XmlTextWriter.
        serializer.Serialize(writer, i, ns)
        writer.Close()
    End Sub
End Class

<?xml version="1.0"?>
 <OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
   <inventory:ItemName>Widget</inventory:ItemName>
   <inventory:Description>Regular Widget</inventory:Description>
   <money:UnitPrice>2.3</money:UnitPrice>
   <inventory:Quantity>10</inventory:Quantity>
   <money:LineTotal>23</money:LineTotal>
 </OrderedItem>

Commenti

Quando viene richiamato il metodo Serialize, i campi pubblici e le proprietà di lettura/scrittura di un oggetto vengono convertiti in XML.When the Serialize method is invoked, the public fields and read/write properties of an object are converted into XML. I metodi, gli indicizzatori, i campi privati e le proprietà di sola lettura non vengono serializzati.Methods, indexers, private fields, and read-only properties are not serialized. Per serializzare tutti i campi e le proprietà, sia pubblici che privati, utilizzare il BinaryFormatter.To serialize all fields and properties, both public and private, use the BinaryFormatter.

Utilizzare il parametro xmlWriter per specificare un oggetto che deriva dalla classe astratta XmlWriter, progettata per la scrittura di documenti XML.Use the xmlWriter parameter to specify an object that derives from the abstract XmlWriter class, which is designed to write XML documents. Il XmlTextWriter deriva dall'XmlWriter.The XmlTextWriter derives from the XmlWriter.

Nota

Il XmlSerializer non può serializzare gli elementi seguenti: matrici di ArrayList e matrici di List<T>.The XmlSerializer cannot serialize the following: arrays of ArrayList and arrays of List<T>.

Vedi anche

Serialize(TextWriter, Object, XmlSerializerNamespaces)

Serializza l'oggetto Object specificato e scrive il documento XML in un file mediante l'oggetto TextWriter specificato, facendo riferimento agli spazi dei nomi specificati.Serializes the specified Object and writes the XML document to a file using the specified TextWriter and references the specified namespaces.

public:
 void Serialize(System::IO::TextWriter ^ textWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces);
public void Serialize (System.IO.TextWriter textWriter, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces);
member this.Serialize : System.IO.TextWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit

Parametri

textWriter
TextWriter

Il TextWriter utilizzato per scrivere il documento XML.The TextWriter used to write the XML document.

o
Object

Object da serializzare.The Object to serialize.

namespaces
XmlSerializerNamespaces

XmlSerializerNamespaces contenente gli spazi dei nomi del documento XML generato.The XmlSerializerNamespaces that contains namespaces for the generated XML document.

Eccezioni

Si è verificato un errore durante la serializzazione.An error occurred during serialization. L'eccezione originale è disponibile tramite la proprietà InnerException.The original exception is available using the InnerException property.

Esempi

Nell'esempio seguente viene serializzato un oggetto con un TextWriter.The following example serializes an object with a TextWriter. Nell'esempio viene inoltre creato un oggetto XmlSerializerNamespaces e vengono aggiunti due spazi dei nomi all'oggetto.The example also creates an XmlSerializerNamespaces object and adds two namespaces to the object. Anche la classe che definisce l'oggetto serializzato viene attribuita con attributi XmlElementAttribute per specificare lo spazio dei nomi per ogni elemento.The class that defines the serialized object is also attributed with XmlElementAttribute attributes to specify the namespace for each element.

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;

// This is the class that will be serialized.
public ref class OrderedItem
{
public:

   [XmlElement(Namespace="http://www.cpandl.com")]
   String^ ItemName;

   [XmlElement(Namespace="http://www.cpandl.com")]
   String^ Description;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Decimal UnitPrice;

   [XmlElement(Namespace="http://www.cpandl.com")]
   int Quantity;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Decimal LineTotal;

   // A custom method used to calculate price per item.
   void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
};

void SerializeObject( String^ filename )
{
   Console::WriteLine( "Writing With TextWriter" );

   // Create an XmlSerializer instance using the type.
   XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
   OrderedItem^ i = gcnew OrderedItem;
   i->ItemName = "Widget";
   i->Description = "Regular Widget";
   i->Quantity = 10;
   i->UnitPrice = (Decimal)2.30;
   i->Calculate();

   // Create an XmlSerializerNamespaces object.
   XmlSerializerNamespaces^ ns = gcnew XmlSerializerNamespaces;

   // Add two namespaces with prefixes.
   ns->Add( "inventory", "http://www.cpandl.com" );
   ns->Add( "money", "http://www.cohowinery.com" );

   // Create a StreamWriter to write with.
   TextWriter^ writer = gcnew StreamWriter( filename );

   /* Serialize using the object using the TextWriter 
      and namespaces. */
   serializer->Serialize( writer, i, ns );
   writer->Close();
}

int main()
{
   // Write a purchase order.
   SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;

// This is the class that will be serialized.
public class OrderedItem
{
   [XmlElement(Namespace = "http://www.cpandl.com")]
   public string ItemName;
   [XmlElement(Namespace = "http://www.cpandl.com")]
   public string Description;
   [XmlElement(Namespace="http://www.cohowinery.com")]
   public decimal UnitPrice;
   [XmlElement(Namespace = "http://www.cpandl.com")]
   public int Quantity;
   [XmlElement(Namespace="http://www.cohowinery.com")]
   public decimal LineTotal;
   // A custom method used to calculate price per item.
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}
 
public class Test{
   public static void Main(string[] args)
   {
      Test t = new Test();
      // Write a purchase order.
      t.SerializeObject("simple.xml");
   }
 
   private void SerializeObject(string filename)
   {
      Console.WriteLine("Writing With TextWriter");
      // Create an XmlSerializer instance using the type.
      XmlSerializer serializer = 
      new XmlSerializer(typeof(OrderedItem));
      OrderedItem i = new OrderedItem();
      i.ItemName = "Widget";
      i.Description = "Regular Widget";
      i.Quantity = 10;
      i.UnitPrice = (decimal) 2.30;
      i.Calculate();
 
      // Create an XmlSerializerNamespaces object.
      XmlSerializerNamespaces ns = 
      new XmlSerializerNamespaces();
      // Add two namespaces with prefixes.
      ns.Add("inventory", "http://www.cpandl.com");
      ns.Add("money", "http://www.cohowinery.com");
      // Create a StreamWriter to write with.
      TextWriter writer = new StreamWriter(filename);
      /* Serialize using the object using the TextWriter 
      and namespaces. */
      serializer.Serialize(writer, i, ns);
      writer.Close();
   }
}

Imports System.IO
Imports System.Xml.Serialization


' This is the class that will be serialized.
Public Class OrderedItem
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public ItemName As String
    
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public Description As String
    
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public UnitPrice As Decimal
    
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public Quantity As Integer
    
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public LineTotal As Decimal
    
    'A custom method used to calculate price per item.
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        ' Write a purchase order.
        t.SerializeObject("simple.xml")
    End Sub
    
    Private Sub SerializeObject(ByVal filename As String)
        Console.WriteLine("Writing With TextWriter")
        ' Create an XmlSerializer instance using the type.
        Dim serializer As New XmlSerializer(GetType(OrderedItem))
        Dim i As New OrderedItem()
        i.ItemName = "Widget"
        i.Description = "Regular Widget"
        i.Quantity = 10
        i.UnitPrice = CDec(2.3)
        i.Calculate()
        
        ' Create an XmlSerializerNamespaces object.
        Dim ns As New XmlSerializerNamespaces()
        ' Add two namespaces with prefixes.
        ns.Add("inventory", "http://www.cpandl.com")
        ns.Add("money", "http://www.cohowinery.com")
        ' Create a StreamWriter to write with.
        Dim writer As New StreamWriter(filename)
        ' Serialize using the object using the TextWriter
        ' and namespaces. 
        serializer.Serialize(writer, i, ns)
        writer.Close()
    End Sub
End Class

<?xml version="1.0"?>
 <OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
   <inventory:ItemName>Widget</inventory:ItemName>
   <inventory:Description>Regular Widget</inventory:Description>
   <money:UnitPrice>2.3</money:UnitPrice>
   <inventory:Quantity>10</inventory:Quantity>
   <money:LineTotal>23</money:LineTotal>
 </OrderedItem>

Commenti

Quando viene richiamato il metodo Serialize, i campi pubblici e le proprietà di lettura/scrittura di un oggetto vengono convertiti in XML.When the Serialize method is invoked the public fields and read/write properties of an object are converted into XML. I metodi, gli indicizzatori, i campi privati e le proprietà di sola lettura non vengono serializzati.Methods, indexers, private fields, and read-only properties are not serialized. Per serializzare tutti i campi e le proprietà, sia pubblici che privati, utilizzare il BinaryFormatter.To serialize all fields and properties, both public and private, use the BinaryFormatter.

Usare il parametro textWriter per specificare un oggetto che deriva dalla classe astratta TextWriter.Use the textWriter parameter to specify an object that derives from the abstract TextWriter class. Le classi che derivano dalla classe TextWriter includono:Classes that derive from TextWriter class include:

Nota

Il XmlSerializer non può serializzare gli elementi seguenti: matrici di ArrayList e matrici di List<T>.The XmlSerializer cannot serialize the following: arrays of ArrayList and arrays of List<T>.

Vedi anche

Serialize(Object, XmlSerializationWriter)

Serializza l'Object specificato e scrive il documento XML in un file utilizzando il XmlSerializationWriter specificato.Serializes the specified Object and writes the XML document to a file using the specified XmlSerializationWriter.

protected:
 virtual void Serialize(System::Object ^ o, System::Xml::Serialization::XmlSerializationWriter ^ writer);
protected virtual void Serialize (object o, System.Xml.Serialization.XmlSerializationWriter writer);
abstract member Serialize : obj * System.Xml.Serialization.XmlSerializationWriter -> unit
override this.Serialize : obj * System.Xml.Serialization.XmlSerializationWriter -> unit
Protected Overridable Sub Serialize (o As Object, writer As XmlSerializationWriter)

Parametri

o
Object

Object da serializzare.The Object to serialize.

writer
XmlSerializationWriter

Il XmlSerializationWriter utilizzato per scrivere il documento XML.The XmlSerializationWriter used to write the XML document.

Eccezioni

Qualsiasi tentativo di accedere al metodo viene effettuato quando questo non è sottoposto a override in una classe derivata.Any attempt is made to access the method when the method is not overridden in a descendant class.

Serialize(TextWriter, Object)

Serializza l'Object specificato e scrive il documento XML in un file utilizzando il TextWriter specificato.Serializes the specified Object and writes the XML document to a file using the specified TextWriter.

public:
 void Serialize(System::IO::TextWriter ^ textWriter, System::Object ^ o);
public void Serialize (System.IO.TextWriter textWriter, object o);
member this.Serialize : System.IO.TextWriter * obj -> unit

Parametri

textWriter
TextWriter

Il TextWriter utilizzato per scrivere il documento XML.The TextWriter used to write the XML document.

o
Object

Object da serializzare.The Object to serialize.

Esempi

Nell'esempio seguente viene serializzato un oggetto utilizzando un TextWriter.The following example serializes an object using a TextWriter.

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml::Serialization;

// This is the class that will be serialized.
public ref class OrderedItem
{
public:
   String^ ItemName;
   String^ Description;
   Decimal UnitPrice;
   int Quantity;
   Decimal LineTotal;

   // A custom method used to calculate price per item.
   void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
};

void SerializeObject( String^ filename )
{
   Console::WriteLine( "Writing With TextWriter" );
   XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
   OrderedItem^ i = gcnew OrderedItem;
   i->ItemName = "Widget";
   i->Description = "Regular Widget";
   i->Quantity = 10;
   i->UnitPrice = (Decimal)2.30;
   i->Calculate();

   /* Create a StreamWriter to write with. First create a FileStream
      object, and create the StreamWriter specifying an Encoding to use. */
   FileStream^ fs = gcnew FileStream( filename,FileMode::Create );
   TextWriter^ writer = gcnew StreamWriter( fs,gcnew UTF8Encoding );

   // Serialize using the XmlTextWriter.
   serializer->Serialize( writer, i );
   writer->Close();
}

int main()
{
   // Write a purchase order.
   SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Text;
using System.Xml.Serialization;

// This is the class that will be serialized.
public class OrderedItem
{
   public string ItemName;
   public string Description;
   public decimal UnitPrice;
   public int Quantity;
   public decimal LineTotal;
   // A custom method used to calculate price per item.
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}
 
public class Test{
   public static void Main(string[] args)
   {
      Test t = new Test();
      // Write a purchase order.
      t.SerializeObject("simple.xml");
   }
 
  private void SerializeObject(string filename)
  {
      Console.WriteLine("Writing With TextWriter");
 
      XmlSerializer serializer = 
      new XmlSerializer(typeof(OrderedItem));
      OrderedItem i = new OrderedItem();
      i.ItemName = "Widget";
      i.Description = "Regular Widget";
      i.Quantity = 10;
      i.UnitPrice = (decimal) 2.30;
      i.Calculate();
 
      /* Create a StreamWriter to write with. First create a FileStream
         object, and create the StreamWriter specifying an Encoding to use. */
      FileStream fs = new FileStream(filename, FileMode.Create);
      TextWriter writer = new StreamWriter(fs, new UTF8Encoding());
      // Serialize using the XmlTextWriter.
      serializer.Serialize(writer, i);
      writer.Close();
   }
}

Imports System.IO
Imports System.Text
Imports System.Xml.Serialization


' This is the class that will be serialized.
Public Class OrderedItem
    Public ItemName As String
    Public Description As String
    Public UnitPrice As Decimal
    Public Quantity As Integer
    Public LineTotal As Decimal
    
    'A custom method used to calculate price per item.
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        ' Write a purchase order.
        t.SerializeObject("simple.xml")
    End Sub
    
    Private Sub SerializeObject(ByVal filename As String)
        Console.WriteLine("Writing With TextWriter")
        
        Dim serializer As New XmlSerializer(GetType(OrderedItem))
        Dim i As New OrderedItem()

        With i
            .ItemName = "Widget"
            .Description = "Regular Widget"
            .Quantity = 10
            .UnitPrice = CDec(2.3)
            .Calculate()
        End With
        
        ' Create a StreamWriter to write with. First create a FileStream
        ' object, and create the StreamWriter specifying an Encoding to use. 
        Dim fs As New FileStream(filename, FileMode.Create)
        Dim writer As New StreamWriter(fs, New UTF8Encoding())
        ' Serialize using the XmlTextWriter.
        serializer.Serialize(writer, i)
        writer.Close()
    End Sub
End Class

<?xml version="1.0"?>
 <OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
   <inventory:ItemName>Widget</inventory:ItemName>
   <inventory:Description>Regular Widget</inventory:Description>
   <money:UnitPrice>2.3</money:UnitPrice>
   <inventory:Quantity>10</inventory:Quantity>
   <money:LineTotal>23</money:LineTotal>
 </OrderedItem>

Commenti

Il metodo Serialize converte i campi pubblici e le proprietà di lettura/scrittura di un oggetto in XML.The Serialize method converts the public fields and read/write properties of an object into XML. Non converte metodi, indicizzatori, campi privati o proprietà di sola lettura.It does not convert methods, indexers, private fields, or read-only properties. Per serializzare tutti i campi e le proprietà di un oggetto, sia pubblici che privati, utilizzare il BinaryFormatter.To serialize all an object's fields and properties, both public and private, use the BinaryFormatter.

Nel parametro textWriter specificare un oggetto che deriva dalla classe astratta TextWriter.In the textWriter parameter, specify an object that derives from the abstract TextWriter class. Le classi che derivano da TextWriter includono:Classes that derive from TextWriter include:

Nota

Il XmlSerializer non può serializzare gli elementi seguenti: matrici di ArrayList e matrici di List<T>.The XmlSerializer cannot serialize the following: arrays of ArrayList and arrays of List<T>.

Vedi anche

Serialize(Stream, Object)

Serializza l'Object specificato e scrive il documento XML in un file utilizzando il Stream specificato.Serializes the specified Object and writes the XML document to a file using the specified Stream.

public:
 void Serialize(System::IO::Stream ^ stream, System::Object ^ o);
public void Serialize (System.IO.Stream stream, object o);
member this.Serialize : System.IO.Stream * obj -> unit

Parametri

stream
Stream

Il Stream utilizzato per scrivere il documento XML.The Stream used to write the XML document.

o
Object

Object da serializzare.The Object to serialize.

Eccezioni

Si è verificato un errore durante la serializzazione.An error occurred during serialization. L'eccezione originale è disponibile tramite la proprietà InnerException.The original exception is available using the InnerException property.

Esempi

Nell'esempio seguente viene serializzato un oggetto utilizzando un oggetto Stream.The following example serializes an object using a Stream object.

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;

// This is the class that will be serialized.
public ref class OrderedItem
{
public:
   String^ ItemName;
   String^ Description;
   Decimal UnitPrice;
   int Quantity;
   Decimal LineTotal;

   // A custom method used to calculate price per item.
   void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
};

void SerializeObject( String^ filename )
{
   Console::WriteLine( "Writing With Stream" );
   XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
   OrderedItem^ i = gcnew OrderedItem;
   i->ItemName = "Widget";
   i->Description = "Regular Widget";
   i->Quantity = 10;
   i->UnitPrice = (Decimal)2.30;
   i->Calculate();

   // Create a FileStream to write with.
   Stream^ writer = gcnew FileStream( filename,FileMode::Create );

   // Serialize the object, and close the TextWriter
   serializer->Serialize( writer, i );
   writer->Close();
}

int main()
{
   // Write a purchase order.
   SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;

// This is the class that will be serialized.
public class OrderedItem
{
   public string ItemName;
   public string Description;
   public decimal UnitPrice;
   public int Quantity;
   public decimal LineTotal;

   // A custom method used to calculate price per item.
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}
 
public class Test{
   public static void Main(string[] args)
   {
      Test t = new Test();
      // Write a purchase order.
      t.SerializeObject("simple.xml");
   }
 
   private void SerializeObject(string filename)
   {
      Console.WriteLine("Writing With Stream");
 
      XmlSerializer serializer = 
      new XmlSerializer(typeof(OrderedItem));
      OrderedItem i = new OrderedItem();
      i.ItemName = "Widget";
      i.Description = "Regular Widget";
      i.Quantity = 10;
      i.UnitPrice = (decimal) 2.30;
      i.Calculate();
 
      // Create a FileStream to write with.
      Stream writer = new FileStream(filename, FileMode.Create);
      // Serialize the object, and close the TextWriter
      serializer.Serialize(writer, i);
      writer.Close();
   }
}

Imports System.IO
Imports System.Xml.Serialization


' This is the class that will be serialized.
Public Class OrderedItem
    Public ItemName As String
    Public Description As String
    Public UnitPrice As Decimal
    Public Quantity As Integer
    Public LineTotal As Decimal
    
    
    ' A custom method used to calculate price per item.
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        ' Write a purchase order.
        t.SerializeObject("simple.xml")
    End Sub
    
    Private Sub SerializeObject(ByVal filename As String)
        Console.WriteLine("Writing With Stream")
        
        Dim serializer As New XmlSerializer(GetType(OrderedItem))
        Dim i As New OrderedItem()

        With i
            .ItemName = "Widget"
            .Description = "Regular Widget"
            .Quantity = 10
            .UnitPrice = CDec(2.3)
            .Calculate()
        End With
        
        ' Create a FileStream to write with.
        Dim writer As New FileStream(filename, FileMode.Create)
        ' Serialize the object, and close the TextWriter
        serializer.Serialize(writer, i)
        writer.Close()
    End Sub
End Class

<?xml version="1.0"?>
 <OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
   <inventory:ItemName>Widget</inventory:ItemName>
   <inventory:Description>Regular Widget</inventory:Description>
   <money:UnitPrice>2.3</money:UnitPrice>
   <inventory:Quantity>10</inventory:Quantity>
   <money:LineTotal>23</money:LineTotal>
 </OrderedItem>

Commenti

Il metodo Serialize converte i campi pubblici e le proprietà di lettura/scrittura di un oggetto in XML.The Serialize method converts the public fields and read/write properties of an object into XML. Non converte metodi, indicizzatori, campi privati o proprietà di sola lettura.It does not convert methods, indexers, private fields, or read-only properties. Per serializzare tutti i campi e le proprietà di un oggetto, sia pubblici che privati, utilizzare il BinaryFormatter.To serialize all of an object's fields and properties, both public and private, use the BinaryFormatter.

Nel parametro stream specificare un oggetto che deriva dalla classe astratta Stream.In the stream parameter, specify an object that derives from the abstract Stream class. Le classi che derivano da Stream includono:Classes that derive from Stream include:

Nota

Il XmlSerializer non può serializzare gli elementi seguenti: matrici di ArrayList e matrici di List<T>.The XmlSerializer cannot serialize the following: arrays of ArrayList and arrays of List<T>.

Vedi anche

Serialize(Stream, Object, XmlSerializerNamespaces)

Serializza l'oggetto Object specificato e scrive il documento XML in un file mediante l'oggetto Stream specificato, che fa riferimento agli spazi dei nomi specificati.Serializes the specified Object and writes the XML document to a file using the specified Stream that references the specified namespaces.

public:
 void Serialize(System::IO::Stream ^ stream, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces);
public void Serialize (System.IO.Stream stream, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces);
member this.Serialize : System.IO.Stream * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit

Parametri

stream
Stream

Il Stream utilizzato per scrivere il documento XML.The Stream used to write the XML document.

o
Object

Object da serializzare.The Object to serialize.

namespaces
XmlSerializerNamespaces

L'XmlSerializerNamespaces cui fa riferimento l'oggetto.The XmlSerializerNamespaces referenced by the object.

Eccezioni

Si è verificato un errore durante la serializzazione.An error occurred during serialization. L'eccezione originale è disponibile tramite la proprietà InnerException.The original exception is available using the InnerException property.

Esempi

Nell'esempio seguente viene serializzato un oggetto con un oggetto Stream.The following example serializes an object with a Stream object. Nell'esempio viene inoltre creato un XmlSerializerNamespaces e vengono aggiunti due spazi dei nomi all'oggetto.The example also creates an XmlSerializerNamespaces and adds two namespaces to the object. Anche la classe che definisce l'oggetto serializzato viene attribuita con attributi XmlElementAttribute per specificare lo spazio dei nomi per ogni elemento.The class that defines the serialized object is also attributed with XmlElementAttribute attributes to specify the namespace for each element.

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;

// This is the class that will be serialized.
public ref class OrderedItem
{
public:

   [XmlElement(Namespace="http://www.cpandl.com")]
   String^ ItemName;

   [XmlElement(Namespace="http://www.cpandl.com")]
   String^ Description;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Decimal UnitPrice;

   [XmlElement(Namespace="http://www.cpandl.com")]
   int Quantity;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Decimal LineTotal;

   // A custom method used to calculate price per item.
   void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
};

void SerializeObject( String^ filename )
{
   Console::WriteLine( "Writing With Stream" );
   XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
   OrderedItem^ i = gcnew OrderedItem;
   i->ItemName = "Widget";
   i->Description = "Regular Widget";
   i->Quantity = 10;
   i->UnitPrice = (Decimal)2.30;
   i->Calculate();

   // Create an XmlSerializerNamespaces object.
   XmlSerializerNamespaces^ ns = gcnew XmlSerializerNamespaces;

   // Add two prefix-namespace pairs.
   ns->Add( "inventory", "http://www.cpandl.com" );
   ns->Add( "money", "http://www.cohowinery.com" );

   // Create a FileStream to write with.
   Stream^ writer = gcnew FileStream( filename,FileMode::Create );

   // Serialize the object, and close the TextWriter
   serializer->Serialize( writer, i, ns );
   writer->Close();
}

void DeserializeObject( String^ filename )
{
   Console::WriteLine( "Reading with Stream" );

   // Create an instance of the XmlSerializer.
   XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );

   // Writing the file requires a Stream.
   Stream^ reader = gcnew FileStream( filename,FileMode::Open );

   // Declare an object variable of the type to be deserialized.
   OrderedItem^ i;

   /* Use the Deserialize method to restore the object's state 
      using data from the XML document. */
   i = dynamic_cast<OrderedItem^>(serializer->Deserialize( reader ));

   // Write out the properties of the object.
   Console::Write( "{0}\t{1}\t{2}\t{3}\t{4}", i->ItemName, i->Description, i->UnitPrice, i->Quantity, i->LineTotal );
}

int main()
{
   // Write a purchase order.
   SerializeObject( "simple.xml" );
   DeserializeObject( "simple.xml" );
}

using System;
using System.IO;
using System.Xml.Serialization;

// This is the class that will be serialized.
public class OrderedItem {
    [XmlElement(Namespace = "http://www.cpandl.com")]
    public string ItemName;
    [XmlElement(Namespace = "http://www.cpandl.com")]
    public string Description;
    [XmlElement(Namespace="http://www.cohowinery.com")]
    public decimal UnitPrice;
    [XmlElement(Namespace = "http://www.cpandl.com")]
    public int Quantity;
    [XmlElement(Namespace="http://www.cohowinery.com")]
    public decimal LineTotal;

    // A custom method used to calculate price per item.
    public void Calculate() {
        LineTotal = UnitPrice * Quantity;
    }
}
 
public class Test {
    
   public static void Main() {
        Test t = new Test();
        // Write a purchase order.
        t.SerializeObject("simple.xml");
        t.DeserializeObject("simple.xml");
   }
 
   private void SerializeObject(string filename) {
        Console.WriteLine("Writing With Stream");
 
        XmlSerializer serializer = 
            new XmlSerializer(typeof(OrderedItem));

        OrderedItem i = new OrderedItem();
        i.ItemName = "Widget";
        i.Description = "Regular Widget";
        i.Quantity = 10;
        i.UnitPrice = (decimal) 2.30;
        i.Calculate();
 
        // Create an XmlSerializerNamespaces object.
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

        // Add two prefix-namespace pairs.
        ns.Add("inventory", "http://www.cpandl.com");
        ns.Add("money", "http://www.cohowinery.com");

        // Create a FileStream to write with.
        Stream writer = new FileStream(filename, FileMode.Create);

        // Serialize the object, and close the TextWriter
        serializer.Serialize(writer, i, ns);
        writer.Close();
    }
 
    private void DeserializeObject(string filename) {
        Console.WriteLine("Reading with Stream");
        // Create an instance of the XmlSerializer.
        XmlSerializer serializer = new XmlSerializer(typeof(OrderedItem));

        // Writing the file requires a Stream.
        Stream reader= new FileStream(filename,FileMode.Open);
          
        // Declare an object variable of the type to be deserialized.
        OrderedItem i;

        /* Use the Deserialize method to restore the object's state 
           using data from the XML document. */
        i = (OrderedItem) serializer.Deserialize(reader);

        // Write out the properties of the object.
        Console.Write(
            i.ItemName + "\t" +
            i.Description + "\t" +
            i.UnitPrice + "\t" +
            i.Quantity + "\t" +
            i.LineTotal);
    }
}

Imports System.IO
Imports System.Xml.Serialization

' This is the class that will be serialized.
Public Class OrderedItem
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public ItemName As String
    
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public Description As String
    
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public UnitPrice As Decimal
    
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public Quantity As Integer
    
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public LineTotal As Decimal
    
    ' A custom method used to calculate price per item.
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class

Public Class Test
        
    Public Shared Sub Main()
        Dim t As New Test()
        ' Write a purchase order.
        t.SerializeObject("simple.xml")
        t.DeserializeObject("simple.xml")
    End Sub    
    
    Private Sub SerializeObject(ByVal filename As String)
        Console.WriteLine("Writing With Stream")
        
        Dim serializer As New XmlSerializer(GetType(OrderedItem))
        
        Dim i As New OrderedItem()
        With i
            .ItemName = "Widget"
            .Description = "Regular Widget"
            .Quantity = 10
            .UnitPrice = CDec(2.3)
            .Calculate()
        End With
        
        ' Create an XmlSerializerNamespaces object.
        Dim ns As New XmlSerializerNamespaces()
        
        ' Add two prefix-namespace pairs.
        ns.Add("inventory", "http://www.cpandl.com")
        ns.Add("money", "http://www.cohowinery.com")
        
        ' Create a FileStream to write with.
        Dim writer As New FileStream(filename, FileMode.Create)
        
        ' Serialize the object, and close the TextWriter
        serializer.Serialize(writer, i, ns)
        writer.Close()
    End Sub
        
    Private Sub DeserializeObject(ByVal filename As String)
        Console.WriteLine("Reading with Stream")
        ' Create an instance of the XmlSerializer.
        Dim serializer As New XmlSerializer(GetType(OrderedItem))
        
        ' Writing the file requires a Stream.
        Dim reader As New FileStream(filename, FileMode.Open)
        
        ' Declare an object variable of the type to be deserialized.
        Dim i As OrderedItem
        
        ' Use the Deserialize method to restore the object's state
        ' using data from the XML document. 
        i = CType(serializer.Deserialize(reader), OrderedItem)
        
        ' Write out the properties of the object.
        Console.Write(i.ItemName & ControlChars.Tab & _
                      i.Description & ControlChars.Tab & _
                      i.UnitPrice & ControlChars.Tab & _
                      i.Quantity & ControlChars.Tab & _
                      i.LineTotal)
    End Sub
End Class

Commenti

Quando viene richiamato il metodo Serialize, i campi pubblici e le proprietà di lettura/scrittura di un oggetto vengono convertiti in XML.When the Serialize method is invoked, the public fields and read/write properties of an object are converted into XML. I metodi, gli indicizzatori, i campi privati e le proprietà di sola lettura non vengono serializzati.Methods, indexers, private fields, and read-only properties are not serialized. Per serializzare tutti i campi e le proprietà, sia pubblici che privati, utilizzare il BinaryFormatter.To serialize all fields and properties, both public and private, use the BinaryFormatter.

Usare il parametro stream per specificare un oggetto che deriva dalla classe astratta Stream, progettata per scrivere nei flussi.Use the stream parameter to specify an object that derives from the abstract Stream class, which is designed to write to streams. Le classi che derivano dalla classe Stream includono:Classes that derive from the Stream class include:

Nota

Il XmlSerializer non può serializzare gli elementi seguenti: matrici di ArrayList e matrici di List<T>.The XmlSerializer cannot serialize the following: arrays of ArrayList and arrays of List<T>.

Vedi anche

Si applica a