XmlSerializer.Serialize Metodo

Definizione

Serializza un oggetto in un documento XML.

Overload

Nome Descrizione
Serialize(XmlWriter, Object)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato XmlWriter.

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

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando gli spazi dei nomi, gli spazi dei nomi XML e la codifica specificati XmlWriter.

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String)

Serializza l'oggetto specificato e scrive il documento XML in un file utilizzando l'oggetto specificato XmlWriter e fa riferimento agli spazi dei nomi e allo stile di codifica specificati.

Serialize(XmlWriter, Object, XmlSerializerNamespaces)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando gli spazi dei nomi specificati XmlWriter e fa riferimento agli spazi dei nomi specificati.

Serialize(TextWriter, Object, XmlSerializerNamespaces)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando gli spazi dei nomi specificati TextWriter e fa riferimento agli spazi dei nomi specificati.

Serialize(Object, XmlSerializationWriter)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato XmlSerializationWriter.

Serialize(TextWriter, Object)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato TextWriter.

Serialize(Stream, Object)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato Stream.

Serialize(Stream, Object, XmlSerializerNamespaces)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato Stream che fa riferimento agli spazi dei nomi specificati.

Serialize(XmlWriter, Object)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato 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
Public Sub Serialize (xmlWriter As XmlWriter, o As Object)

Parametri

xmlWriter
XmlWriter

Oggetto XmlWriter utilizzato per scrivere il documento XML.

o
Object

Oggetto Object da serializzare.

Eccezioni

Errore durante la serializzazione. L'eccezione originale è disponibile usando la InnerException proprietà .

Esempio

Nell'esempio seguente viene serializzato un oggetto utilizzando un oggetto XmlWriter.

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 OrderedItem4
{
    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 Test4
{
    public static void Main()
    {
        Test4 t = new();
        // Write a purchase order.
        t.SerializeObject("simple.xml");
    }

    private void SerializeObject(string filename)
    {
        Console.WriteLine("Writing With XmlTextWriter");

        XmlSerializer serializer = new(typeof(OrderedItem4));
        OrderedItem4 i = new()
        {
            ItemName = "Widget",
            Description = "Regular Widget",
            Quantity = 10,
            UnitPrice = (decimal)2.30
        };
        i.Calculate();
        // Create an XmlTextWriter using a FileStream.
        Stream fs = new FileStream(filename, FileMode.Create);
        XmlTextWriter writer = new(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 Serialize metodo converte i campi pubblici e le proprietà di lettura/scrittura di un oggetto in XML. Non converte metodi, indicizzatori, campi privati o proprietà di sola lettura.

xmlWriter Nel parametro specificare un oggetto che deriva dalla classe astrattaXmlWriter. Deriva XmlTextWriter da XmlWriter.

Note

Non XmlSerializer è possibile serializzare le seguenti matrici di ArrayList e matrici di List<T>.

Vedi anche

Si applica a

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

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando gli spazi dei nomi, gli spazi dei nomi XML e la codifica specificati XmlWriter.

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
Public Sub Serialize (xmlWriter As XmlWriter, o As Object, namespaces As XmlSerializerNamespaces, encodingStyle As String, id As String)

Parametri

xmlWriter
XmlWriter

Oggetto XmlWriter utilizzato per scrivere il documento XML.

o
Object

Oggetto da serializzare.

namespaces
XmlSerializerNamespaces

Istanza di XmlSerializerNamespaces che contiene spazi dei nomi e prefissi da usare.

encodingStyle
String

Codifica utilizzata nel documento.

id
String

Per i messaggi con codifica SOAP, la base usata per generare attributi ID.

Commenti

Il parametro id fornisce la stringa di base usata per creare ID SOAP. Per impostazione predefinita, si tratta di "id1", "id2" e così via. Ma se il parametro è impostato su "myBase", i valori generati sono "myBaseid1", "myBaseid2" e così via. Questa funzionalità viene usata per creare valori ID univoci nell'intero messaggio SOAP.

Si applica a

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String)

Serializza l'oggetto specificato e scrive il documento XML in un file utilizzando l'oggetto specificato XmlWriter e fa riferimento agli spazi dei nomi e allo stile di codifica specificati.

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
Public Sub Serialize (xmlWriter As XmlWriter, o As Object, namespaces As XmlSerializerNamespaces, encodingStyle As String)

Parametri

xmlWriter
XmlWriter

Oggetto XmlWriter utilizzato per scrivere il documento XML.

o
Object

Oggetto da serializzare.

namespaces
XmlSerializerNamespaces

Oggetto XmlSerializerNamespaces a cui fa riferimento l'oggetto .

encodingStyle
String

Stile di codifica del codice XML serializzato.

Attributi

Eccezioni

Errore durante la serializzazione. L'eccezione originale è disponibile usando la InnerException proprietà .

Commenti

Quando viene richiamato il Serialize metodo, i campi pubblici e le proprietà di lettura/scrittura di un oggetto vengono convertiti in XML. I metodi, gli indicizzatori, i campi privati e le proprietà di sola lettura non vengono serializzati.

Utilizzare il xmlWriter parametro per specificare un oggetto che deriva dalla classe astratta XmlWriter , progettata per scrivere documenti XML. Deriva XmlTextWriter da XmlWriter.

Impostare il encodingStyle parametro 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.

Note

Non XmlSerializer è possibile serializzare le seguenti matrici di ArrayList e matrici di List<T>.

Vedi anche

Si applica a

Serialize(XmlWriter, Object, XmlSerializerNamespaces)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando gli spazi dei nomi specificati XmlWriter e fa riferimento agli spazi dei nomi specificati.

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
Public Sub Serialize (xmlWriter As XmlWriter, o As Object, namespaces As XmlSerializerNamespaces)

Parametri

xmlWriter
XmlWriter

Oggetto XmlWriter utilizzato per scrivere il documento XML.

o
Object

Oggetto Object da serializzare.

namespaces
XmlSerializerNamespaces

Oggetto XmlSerializerNamespaces a cui fa riferimento l'oggetto .

Eccezioni

Errore durante la serializzazione. L'eccezione originale è disponibile usando la InnerException proprietà .

Esempio

Nell'esempio seguente viene serializzato un oggetto con un oggetto XmlWriter. Nell'esempio viene inoltre creato un oggetto XmlSerializerNamespaces e vengono aggiunti due spazi dei nomi all'oggetto . Diverse istanze della classe vengono applicate ai membri della XmlElementAttribute classe per specificare lo spazio dei nomi per ogni elemento.

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 OrderedItem5
{
    [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 Test5
{
    public static void Main()
    {
        Test5 t = new();
        // Write a purchase order.
        t.SerializeObject("simple.xml");
    }

    private void SerializeObject(string filename)
    {
        Console.WriteLine("Writing With XmlTextWriter");

        XmlSerializer serializer = new(typeof(OrderedItem5));
        OrderedItem5 i = new()
        {
            ItemName = "Widget",
            Description = "Regular Widget",
            Quantity = 10,
            UnitPrice = (decimal)2.30
        };
        i.Calculate();

        // Create an XmlSerializerNamespaces object.
        XmlSerializerNamespaces ns = new();

        // 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);
        XmlTextWriter writer = new(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 Serialize metodo, i campi pubblici e le proprietà di lettura/scrittura di un oggetto vengono convertiti in XML. I metodi, gli indicizzatori, i campi privati e le proprietà di sola lettura non vengono serializzati.

Utilizzare il xmlWriter parametro per specificare un oggetto che deriva dalla classe astratta XmlWriter , progettata per scrivere documenti XML. Deriva XmlTextWriter da XmlWriter.

Note

Non XmlSerializer è possibile serializzare le seguenti matrici di ArrayList e matrici di List<T>.

Vedi anche

Si applica a

Serialize(TextWriter, Object, XmlSerializerNamespaces)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando gli spazi dei nomi specificati TextWriter e fa riferimento agli spazi dei nomi specificati.

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
Public Sub Serialize (textWriter As TextWriter, o As Object, namespaces As XmlSerializerNamespaces)

Parametri

textWriter
TextWriter

Oggetto TextWriter utilizzato per scrivere il documento XML.

o
Object

Oggetto Object da serializzare.

namespaces
XmlSerializerNamespaces

Oggetto XmlSerializerNamespaces contenente spazi dei nomi per il documento XML generato.

Eccezioni

Errore durante la serializzazione. L'eccezione originale è disponibile usando la InnerException proprietà .

Esempio

Nell'esempio seguente viene serializzato un oggetto con un oggetto TextWriter. Nell'esempio viene inoltre creato un XmlSerializerNamespaces oggetto e vengono aggiunti due spazi dei nomi all'oggetto . Anche la classe che definisce l'oggetto serializzato viene attribuita con XmlElementAttribute attributi per specificare lo spazio dei nomi per ogni elemento.

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

// This is the class that will be serialized.
public class OrderedItem1
{
    [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 Test1
{
    public static void Main(string[] args)
    {
        Test1 t = new();
        // 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(typeof(OrderedItem1));
        OrderedItem1 i = new()
        {
            ItemName = "Widget",
            Description = "Regular Widget",
            Quantity = 10,
            UnitPrice = (decimal)2.30
        };
        i.Calculate();

        // Create an XmlSerializerNamespaces object.
        XmlSerializerNamespaces ns = new();
        // 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.
        StreamWriter writer = new(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 il Serialize metodo viene richiamato i campi pubblici e le proprietà di lettura/scrittura di un oggetto vengono convertite in XML. I metodi, gli indicizzatori, i campi privati e le proprietà di sola lettura non vengono serializzati.

Usare il textWriter parametro per specificare un oggetto che deriva dalla classe astratta TextWriter . Le classi che derivano dalla TextWriter classe includono:

Note

Non XmlSerializer è possibile serializzare le seguenti matrici di ArrayList e matrici di List<T>.

Vedi anche

Si applica a

Serialize(Object, XmlSerializationWriter)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato 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

Oggetto Object da serializzare.

writer
XmlSerializationWriter

Oggetto XmlSerializationWriter utilizzato per scrivere il documento XML.

Eccezioni

Qualsiasi tentativo viene effettuato per accedere al metodo quando il metodo non viene sottoposto a override in una classe discendente.

Si applica a

Serialize(TextWriter, Object)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato 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
Public Sub Serialize (textWriter As TextWriter, o As Object)

Parametri

textWriter
TextWriter

Oggetto TextWriter utilizzato per scrivere il documento XML.

o
Object

Oggetto Object da serializzare.

Esempio

Nell'esempio seguente viene serializzato un oggetto utilizzando un oggetto TextWriter.

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();
        // Write a purchase order.
        t.SerializeObject("simple.xml");
    }

    private void SerializeObject(string filename)
    {
        Console.WriteLine("Writing With TextWriter");

        XmlSerializer serializer = new(typeof(OrderedItem));
        OrderedItem i = new()
        {
            ItemName = "Widget",
            Description = "Regular Widget",
            Quantity = 10,
            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(filename, FileMode.Create);
        StreamWriter writer = new(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 Serialize metodo converte i campi pubblici e le proprietà di lettura/scrittura di un oggetto in XML. Non converte metodi, indicizzatori, campi privati o proprietà di sola lettura.

textWriter Nel parametro specificare un oggetto che deriva dalla classe astrattaTextWriter. Le classi che derivano da TextWriter includono:

Note

Non XmlSerializer è possibile serializzare le seguenti matrici di ArrayList e matrici di List<T>.

Vedi anche

Si applica a

Serialize(Stream, Object)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato 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
Public Sub Serialize (stream As Stream, o As Object)

Parametri

stream
Stream

Oggetto Stream utilizzato per scrivere il documento XML.

o
Object

Oggetto Object da serializzare.

Eccezioni

Errore durante la serializzazione. L'eccezione originale è disponibile usando la InnerException proprietà .

Esempio

Nell'esempio seguente viene serializzato un oggetto utilizzando un Stream oggetto .

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

// This is the class that will be serialized.
public class OrderedItem2
{
    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 Test2
{
    public static void Main(string[] args)
    {
        Test2 t = new();
        // Write a purchase order.
        t.SerializeObject("simple.xml");
    }

    private void SerializeObject(string filename)
    {
        Console.WriteLine("Writing With Stream");

        XmlSerializer serializer = new(typeof(OrderedItem2));
        OrderedItem2 i = new()
        {
            ItemName = "Widget",
            Description = "Regular Widget",
            Quantity = 10,
            UnitPrice = (decimal)2.30
        };
        i.Calculate();

        // Create a FileStream to write with.
        FileStream writer = new(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 Serialize metodo converte i campi pubblici e le proprietà di lettura/scrittura di un oggetto in XML. Non converte metodi, indicizzatori, campi privati o proprietà di sola lettura.

stream Nel parametro specificare un oggetto che deriva dalla classe astrattaStream. Le classi che derivano da Stream includono:

Note

Non XmlSerializer è possibile serializzare le seguenti matrici di ArrayList e matrici di List<T>.

Vedi anche

Si applica a

Serialize(Stream, Object, XmlSerializerNamespaces)

Serializza l'oggetto specificato Object e scrive il documento XML in un file utilizzando l'oggetto specificato Stream che fa riferimento agli spazi dei nomi specificati.

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
Public Sub Serialize (stream As Stream, o As Object, namespaces As XmlSerializerNamespaces)

Parametri

stream
Stream

Oggetto Stream utilizzato per scrivere il documento XML.

o
Object

Oggetto Object da serializzare.

namespaces
XmlSerializerNamespaces

Oggetto XmlSerializerNamespaces a cui fa riferimento l'oggetto .

Eccezioni

Errore durante la serializzazione. L'eccezione originale è disponibile usando la InnerException proprietà .

Esempio

Nell'esempio seguente viene serializzato un oggetto con un Stream oggetto . Nell'esempio viene inoltre creato un oggetto XmlSerializerNamespaces e vengono aggiunti due spazi dei nomi all'oggetto . Anche la classe che definisce l'oggetto serializzato viene attribuita con XmlElementAttribute attributi per specificare lo spazio dei nomi per ogni elemento.

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

// This is the class that will be serialized.
public class OrderedItem3
{
    [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 Test3
{
    public static void Main()
    {
        Test3 t = new();
        // 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(typeof(OrderedItem3));

        OrderedItem3 i = new()
        {
            ItemName = "Widget",
            Description = "Regular Widget",
            Quantity = 10,
            UnitPrice = (decimal)2.30
        };
        i.Calculate();

        // Create an XmlSerializerNamespaces object.
        XmlSerializerNamespaces ns = new();

        // 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.
        FileStream writer = new(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(typeof(OrderedItem3));

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

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

        /* Use the Deserialize method to restore the object's state
           using data from the XML document. */
        i = (OrderedItem3)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 Serialize metodo, i campi pubblici e le proprietà di lettura/scrittura di un oggetto vengono convertiti in XML. I metodi, gli indicizzatori, i campi privati e le proprietà di sola lettura non vengono serializzati.

Usare il stream parametro per specificare un oggetto che deriva dalla classe astratta Stream , progettata per scrivere nei flussi. Le classi che derivano dalla Stream classe includono:

Note

Non XmlSerializer è possibile serializzare le seguenti matrici di ArrayList e matrici di List<T>.

Vedi anche

Si applica a