XmlSerializer Clase

Definición

Serializa y deserializa objetos en documentos XML y desde ellos. XmlSerializer permite controlar cómo se codifican los objetos en XML.

public ref class XmlSerializer
public class XmlSerializer
type XmlSerializer = class
Public Class XmlSerializer
Herencia
XmlSerializer

Ejemplos

En el ejemplo siguiente se incluyen dos clases principales: PurchaseOrder y Test. La PurchaseOrder clase contiene información sobre una sola compra. La Test clase contiene los métodos que crean el pedido de compra y que leen el pedido de compra creado.

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

/* The XmlRootAttribute allows you to set an alternate name
   (PurchaseOrder) of the XML element, the element namespace; by
   default, the XmlSerializer uses the class name. The attribute
   also allows you to set the XML namespace for the element.  Lastly,
   the attribute sets the IsNullable property, which specifies whether
   the xsi:null attribute appears if the class instance is set to
   a null reference. */
[XmlRootAttribute("PurchaseOrder", Namespace="http://www.cpandl.com",
IsNullable = false)]
public class PurchaseOrder
{
   public Address ShipTo;
   public string OrderDate;
   /* The XmlArrayAttribute changes the XML element name
    from the default of "OrderedItems" to "Items". */
   [XmlArrayAttribute("Items")]
   public OrderedItem[] OrderedItems;
   public decimal SubTotal;
   public decimal ShipCost;
   public decimal TotalCost;
}

public class Address
{
   /* The XmlAttribute instructs the XmlSerializer to serialize the Name
      field as an XML attribute instead of an XML element (the default
      behavior). */
   [XmlAttribute]
   public string Name;
   public string Line1;

   /* Setting the IsNullable property to false instructs the
      XmlSerializer that the XML attribute will not appear if
      the City field is set to a null reference. */
   [XmlElementAttribute(IsNullable = false)]
   public string City;
   public string State;
   public string Zip;
}

public class OrderedItem
{
   public string ItemName;
   public string Description;
   public decimal UnitPrice;
   public int Quantity;
   public decimal LineTotal;

   /* Calculate is a custom method that calculates the price per item,
      and stores the value in a field. */
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}

public class Test
{
   public static void Main()
   {
      // Read and write purchase orders.
      Test t = new Test();
      t.CreatePO("po.xml");
      t.ReadPO("po.xml");
   }

   private void CreatePO(string filename)
   {
      // Create an instance of the XmlSerializer class;
      // specify the type of object to serialize.
      XmlSerializer serializer =
      new XmlSerializer(typeof(PurchaseOrder));
      TextWriter writer = new StreamWriter(filename);
      PurchaseOrder po=new PurchaseOrder();

      // Create an address to ship and bill to.
      Address billAddress = new Address();
      billAddress.Name = "Teresa Atkinson";
      billAddress.Line1 = "1 Main St.";
      billAddress.City = "AnyTown";
      billAddress.State = "WA";
      billAddress.Zip = "00000";
      // Set ShipTo and BillTo to the same addressee.
      po.ShipTo = billAddress;
      po.OrderDate = System.DateTime.Now.ToLongDateString();

      // Create an OrderedItem object.
      OrderedItem i1 = new OrderedItem();
      i1.ItemName = "Widget S";
      i1.Description = "Small widget";
      i1.UnitPrice = (decimal) 5.23;
      i1.Quantity = 3;
      i1.Calculate();

      // Insert the item into the array.
      OrderedItem [] items = {i1};
      po.OrderedItems = items;
      // Calculate the total cost.
      decimal subTotal = new decimal();
      foreach(OrderedItem oi in items)
      {
         subTotal += oi.LineTotal;
      }
      po.SubTotal = subTotal;
      po.ShipCost = (decimal) 12.51;
      po.TotalCost = po.SubTotal + po.ShipCost;
      // Serialize the purchase order, and close the TextWriter.
      serializer.Serialize(writer, po);
      writer.Close();
   }

   protected void ReadPO(string filename)
   {
      // Create an instance of the XmlSerializer class;
      // specify the type of object to be deserialized.
      XmlSerializer serializer = new XmlSerializer(typeof(PurchaseOrder));
      /* If the XML document has been altered with unknown
      nodes or attributes, handle them with the
      UnknownNode and UnknownAttribute events.*/
      serializer.UnknownNode+= new
      XmlNodeEventHandler(serializer_UnknownNode);
      serializer.UnknownAttribute+= new
      XmlAttributeEventHandler(serializer_UnknownAttribute);

      // A FileStream is needed to read the XML document.
      FileStream fs = new FileStream(filename, FileMode.Open);
      // Declare an object variable of the type to be deserialized.
      PurchaseOrder po;
      /* Use the Deserialize method to restore the object's state with
      data from the XML document. */
      po = (PurchaseOrder) serializer.Deserialize(fs);
      // Read the order date.
      Console.WriteLine ("OrderDate: " + po.OrderDate);

      // Read the shipping address.
      Address shipTo = po.ShipTo;
      ReadAddress(shipTo, "Ship To:");
      // Read the list of ordered items.
      OrderedItem [] items = po.OrderedItems;
      Console.WriteLine("Items to be shipped:");
      foreach(OrderedItem oi in items)
      {
         Console.WriteLine("\t"+
         oi.ItemName + "\t" +
         oi.Description + "\t" +
         oi.UnitPrice + "\t" +
         oi.Quantity + "\t" +
         oi.LineTotal);
      }
      // Read the subtotal, shipping cost, and total cost.
      Console.WriteLine("\t\t\t\t\t Subtotal\t" + po.SubTotal);
      Console.WriteLine("\t\t\t\t\t Shipping\t" + po.ShipCost);
      Console.WriteLine("\t\t\t\t\t Total\t\t" + po.TotalCost);
   }

   protected void ReadAddress(Address a, string label)
   {
      // Read the fields of the Address object.
      Console.WriteLine(label);
      Console.WriteLine("\t"+ a.Name );
      Console.WriteLine("\t" + a.Line1);
      Console.WriteLine("\t" + a.City);
      Console.WriteLine("\t" + a.State);
      Console.WriteLine("\t" + a.Zip );
      Console.WriteLine();
   }

   private void serializer_UnknownNode
   (object sender, XmlNodeEventArgs e)
   {
      Console.WriteLine("Unknown Node:" +   e.Name + "\t" + e.Text);
   }

   private void serializer_UnknownAttribute
   (object sender, XmlAttributeEventArgs e)
   {
      System.Xml.XmlAttribute attr = e.Attr;
      Console.WriteLine("Unknown attribute " +
      attr.Name + "='" + attr.Value + "'");
   }
}
Imports System.Xml
Imports System.Xml.Serialization
Imports System.IO

' The XmlRootAttribute allows you to set an alternate name
' (PurchaseOrder) of the XML element, the element namespace; by
' default, the XmlSerializer uses the class name. The attribute
' also allows you to set the XML namespace for the element.  Lastly,
' the attribute sets the IsNullable property, which specifies whether
' the xsi:null attribute appears if the class instance is set to
' a null reference. 
<XmlRootAttribute("PurchaseOrder", _
 Namespace := "http://www.cpandl.com", IsNullable := False)> _
Public Class PurchaseOrder
    
    Public ShipTo As Address
    Public OrderDate As String
    ' The XmlArrayAttribute changes the XML element name
    ' from the default of "OrderedItems" to "Items". 
    <XmlArrayAttribute("Items")> _
    Public OrderedItems() As OrderedItem
    Public SubTotal As Decimal
    Public ShipCost As Decimal
    Public TotalCost As Decimal
End Class


Public Class Address
    ' The XmlAttribute instructs the XmlSerializer to serialize the Name
    ' field as an XML attribute instead of an XML element (the default
    ' behavior). 
    <XmlAttribute()> _
    Public Name As String
    Public Line1 As String
    
    ' Setting the IsNullable property to false instructs the
    ' XmlSerializer that the XML attribute will not appear if
    ' the City field is set to a null reference. 
    <XmlElementAttribute(IsNullable := False)> _
    Public City As String
    Public State As String
    Public Zip As String
End Class


Public Class OrderedItem
    Public ItemName As String
    Public Description As String
    Public UnitPrice As Decimal
    Public Quantity As Integer
    Public LineTotal As Decimal
    
    
    ' Calculate is a custom method that calculates the price per item,
    ' and stores the value in a field. 
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class


Public Class Test
    
   Public Shared Sub Main()
      ' Read and write purchase orders.
      Dim t As New Test()
      t.CreatePO("po.xml")
      t.ReadPO("po.xml")
   End Sub
    
   Private Sub CreatePO(filename As String)
      ' Create an instance of the XmlSerializer class;
      ' specify the type of object to serialize.
      Dim serializer As New XmlSerializer(GetType(PurchaseOrder))
      Dim writer As New StreamWriter(filename)
      Dim po As New PurchaseOrder()
        
      ' Create an address to ship and bill to.
      Dim billAddress As New Address()
      billAddress.Name = "Teresa Atkinson"
      billAddress.Line1 = "1 Main St."
      billAddress.City = "AnyTown"
      billAddress.State = "WA"
      billAddress.Zip = "00000"
      ' Set ShipTo and BillTo to the same addressee.
      po.ShipTo = billAddress
      po.OrderDate = System.DateTime.Now.ToLongDateString()
        
      ' Create an OrderedItem object.
      Dim i1 As New OrderedItem()
      i1.ItemName = "Widget S"
      i1.Description = "Small widget"
      i1.UnitPrice = CDec(5.23)
      i1.Quantity = 3
      i1.Calculate()
        
      ' Insert the item into the array.
      Dim items(0) As OrderedItem
      items(0) = i1
      po.OrderedItems = items
      ' Calculate the total cost.
      Dim subTotal As New Decimal()
      Dim oi As OrderedItem
      For Each oi In  items
         subTotal += oi.LineTotal
      Next oi
      po.SubTotal = subTotal
      po.ShipCost = CDec(12.51)
      po.TotalCost = po.SubTotal + po.ShipCost
      ' Serialize the purchase order, and close the TextWriter.
      serializer.Serialize(writer, po)
      writer.Close()
   End Sub
    
   Protected Sub ReadPO(filename As String)
      ' Create an instance of the XmlSerializer class;
      ' specify the type of object to be deserialized.
      Dim serializer As New XmlSerializer(GetType(PurchaseOrder))
      ' If the XML document has been altered with unknown
      ' nodes or attributes, handle them with the
      ' UnknownNode and UnknownAttribute events.
      AddHandler serializer.UnknownNode, AddressOf serializer_UnknownNode
      AddHandler serializer.UnknownAttribute, AddressOf serializer_UnknownAttribute
      
      ' A FileStream is needed to read the XML document.
      Dim fs As New FileStream(filename, FileMode.Open)
      ' Declare an object variable of the type to be deserialized.
      Dim po As PurchaseOrder
      ' Use the Deserialize method to restore the object's state with
      ' data from the XML document. 
      po = CType(serializer.Deserialize(fs), PurchaseOrder)
      ' Read the order date.
      Console.WriteLine(("OrderDate: " & po.OrderDate))
        
      ' Read the shipping address.
      Dim shipTo As Address = po.ShipTo
      ReadAddress(shipTo, "Ship To:")
      ' Read the list of ordered items.
      Dim items As OrderedItem() = po.OrderedItems
      Console.WriteLine("Items to be shipped:")
      Dim oi As OrderedItem
      For Each oi In  items
         Console.WriteLine((ControlChars.Tab & oi.ItemName & ControlChars.Tab & _
         oi.Description & ControlChars.Tab & oi.UnitPrice & ControlChars.Tab & _
         oi.Quantity & ControlChars.Tab & oi.LineTotal))
      Next oi
      ' Read the subtotal, shipping cost, and total cost.
      Console.WriteLine(( New String(ControlChars.Tab, 5) & _
      " Subtotal"  & ControlChars.Tab & po.SubTotal))
      Console.WriteLine(New String(ControlChars.Tab, 5) & _
      " Shipping" & ControlChars.Tab & po.ShipCost )
      Console.WriteLine( New String(ControlChars.Tab, 5) & _
      " Total" &  New String(ControlChars.Tab, 2) & po.TotalCost)
    End Sub
    
    Protected Sub ReadAddress(a As Address, label As String)
      ' Read the fields of the Address object.
      Console.WriteLine(label)
      Console.WriteLine(ControlChars.Tab & a.Name)
      Console.WriteLine(ControlChars.Tab & a.Line1)
      Console.WriteLine(ControlChars.Tab & a.City)
      Console.WriteLine(ControlChars.Tab & a.State)
      Console.WriteLine(ControlChars.Tab & a.Zip)
      Console.WriteLine()
    End Sub
        
    Private Sub serializer_UnknownNode(sender As Object, e As XmlNodeEventArgs)
        Console.WriteLine(("Unknown Node:" & e.Name & ControlChars.Tab & e.Text))
    End Sub
    
    
    Private Sub serializer_UnknownAttribute(sender As Object, e As XmlAttributeEventArgs)
        Dim attr As System.Xml.XmlAttribute = e.Attr
        Console.WriteLine(("Unknown attribute " & attr.Name & "='" & attr.Value & "'"))
    End Sub
End Class

Comentarios

La serialización XML es el proceso de convertir las propiedades y campos públicos de un objeto en un formato serie (en este caso, XML) para el almacenamiento o el transporte. La deserialización vuelve a crear el objeto en su estado original a partir de la salida XML. Puede considerar la serialización como una manera de guardar el estado de un objeto en un flujo o búfer. Por ejemplo, ASP.NET usa la XmlSerializer clase para codificar mensajes de servicio web XML.

Los datos de los objetos se describen mediante construcciones del lenguaje de programación como clases, campos, propiedades, tipos primitivos, matrices e incluso XML incrustado en forma de XmlElement objetos o XmlAttribute . Tiene la opción de crear sus propias clases, anotadas con atributos o mediante la Herramienta de definición de esquemas XML (Xsd.exe) para generar las clases basadas en un documento de definición de esquema XML (XSD). Si tiene un esquema XML, puede ejecutar el Xsd.exe para generar un conjunto de clases fuertemente tipadas en el esquema y anotadas con atributos que se adhieren al esquema cuando se serializan.

Para transferir datos entre objetos y XML, se requiere una asignación de las construcciones del lenguaje de programación al esquema XML y del esquema XML a las construcciones del lenguaje de programación. Las XmlSerializer y las herramientas relacionadas como Xsd.exe proporcionan el puente entre estas dos tecnologías tanto durante el diseño como en la ejecución. En tiempo de diseño, use el Xsd.exe para generar un documento de esquema XML (.xsd) desde las clases personalizadas o para generar clases a partir de un esquema determinado. En cualquier caso, las clases se anotan con atributos personalizados para indicar a XmlSerializer cómo asignar entre el sistema de esquema XML y Common Language Runtime. En tiempo de ejecución, las instancias de las clases se pueden serializar en documentos XML que siguen el esquema especificado. Del mismo modo, estos documentos XML se pueden deserializar en objetos en tiempo de ejecución. Tenga en cuenta que el esquema XML es opcional y no es necesario en tiempo de diseño o tiempo de ejecución.

Control del código XML generado

Para controlar el XML generado, puede aplicar atributos especiales a clases y miembros. Por ejemplo, para especificar un nombre de elemento XML diferente, aplique un objeto XmlElementAttribute a un campo o propiedad público y establezca la ElementName propiedad . Para obtener una lista completa de atributos similares, vea Atributos que controlan la serialización XML. También puede implementar la IXmlSerializable interfaz para controlar la salida XML.

Si el XML generado debe ajustarse a la sección 5 del documento del Consorcio World Wide Web, Protocolo simple de acceso a objetos (SOAP) 1.1, debe construir el XmlSerializer con un XmlTypeMapping. Para controlar aún más el XML SOAP codificado, use los atributos enumerados en Atributos que controlan la serialización SOAP codificada.

Con XmlSerializer puede aprovechar las ventajas de trabajar con clases fuertemente tipadas y seguir teniendo la flexibilidad de XML. Con campos o propiedades de tipo XmlElement, XmlAttribute o XmlNode en las clases fuertemente tipadas, puede leer partes del documento XML directamente en objetos XML.

Si trabaja con esquemas XML extensibles, también puede usar los XmlAnyElementAttribute atributos y XmlAnyAttributeAttribute para serializar y deserializar elementos o atributos que no se encuentran en el esquema original. Para usar los objetos , aplique un objeto XmlAnyElementAttribute a un campo que devuelva una matriz de XmlElement objetos o aplique un XmlAnyAttributeAttribute objeto a un campo que devuelva una matriz de XmlAttribute objetos.

Si una propiedad o campo devuelve un objeto complejo (como una matriz o una instancia de clase), lo XmlSerializer convierte en un elemento anidado dentro del documento XML principal. Por ejemplo, la primera clase del código siguiente devuelve una instancia de la segunda clase.

Public Class MyClass
    Public MyObjectProperty As MyObject
End Class

Public Class MyObject
    Public ObjectName As String
End Class
public class MyClass
{
    public MyObject MyObjectProperty;
}
public class MyObject
{
    public string ObjectName;
}

La salida XML serializada tiene este aspecto:

<MyClass>
  <MyObjectProperty>
  <ObjectName>My String</ObjectName>
  </MyObjectProperty>
</MyClass>

Si un esquema incluye un elemento opcional (minOccurs = '0'), o si el esquema incluye un valor predeterminado, tiene dos opciones. Una opción es usar System.ComponentModel.DefaultValueAttribute para especificar el valor predeterminado, como se muestra en el código siguiente.

Public Class PurchaseOrder
    <System.ComponentModel.DefaultValueAttribute ("2002")> _
    Public Year As String
End Class
public class PurchaseOrder
{
    [System.ComponentModel.DefaultValueAttribute ("2002")]
    public string Year;
}

Otra opción es usar un patrón especial para crear un campo booleano reconocido por XmlSerializer, y aplicar al campo XmlIgnoreAttribute. El patrón se crea en forma de propertyNameSpecified. Por ejemplo, si hay un campo denominado "MyFirstName", también crearía un campo denominado "MyFirstNameSpecified" que indica XmlSerializer si se debe generar el elemento XML denominado "MyFirstName". Esto se muestra en el ejemplo siguiente.

Public Class OptionalOrder
    ' This field's value should not be serialized
    ' if it is uninitialized.
    Public FirstOrder As String

    ' Use the XmlIgnoreAttribute to ignore the
    ' special field named "FirstOrderSpecified".
    <System.Xml.Serialization.XmlIgnoreAttribute> _
    Public FirstOrderSpecified As Boolean
End Class
public class OptionalOrder
{
    // This field should not be serialized
    // if it is uninitialized.
    public string FirstOrder;

    // Use the XmlIgnoreAttribute to ignore the
    // special field named "FirstOrderSpecified".
    [System.Xml.Serialization.XmlIgnoreAttribute]
    public bool FirstOrderSpecified;
}

Invalidación de la serialización predeterminada

También puede invalidar la serialización de cualquier conjunto de objetos y sus campos y propiedades creando uno de los atributos adecuados y agregándolo a una instancia de la XmlAttributes clase . La invalidación de la serialización de esta manera tiene dos usos: en primer lugar, puede controlar y aumentar la serialización de objetos que se encuentran en un archivo DLL, incluso si no tiene acceso al origen; en segundo lugar, puede crear un conjunto de clases serializables, pero serializar los objetos de varias maneras. Para obtener más información, vea la XmlAttributeOverrides clase y el artículo cómo controlar la serialización de clases derivadas.

Para serializar un objeto, llame al Serialize método . Para deserializar un objeto, llame al Deserialize método .

Para agregar espacios de nombres XML a un documento XML, vea XmlSerializerNamespaces.

Note

XmlSerializer proporciona un tratamiento especial a las clases que implementan IEnumerable o ICollection. Una clase que implementa IEnumerable debe implementar un método público Add que toma un único parámetro. El parámetro del método Add debe ser del mismo tipo que se devuelve de la propiedad Current en el valor devuelto desde GetEnumerator, o bien una de las bases de ese tipo. Una clase que implementa ICollection (como CollectionBase), además de IEnumerable, debe tener una propiedad indexada pública Item (indexador en C#) que acepta un entero, y debe tener una propiedad pública Count de tipo entero. El parámetro del método Add debe ser del mismo tipo que el devuelto por la propiedad Item, o una de las bases de dicho tipo. En el caso de las clases que implementan ICollection, los valores que se van a serializar se recuperan de la propiedad indizada Item , no llamando a GetEnumerator.

Debe tener permiso para escribir en el directorio temporal (tal como se define en la variable de entorno TEMP) para deserializar un objeto.

Ensamblados generados dinámicamente

Para aumentar el rendimiento, la infraestructura de serialización XML genera dinámicamente ensamblados para serializar y deserializar tipos especificados. La infraestructura busca y reutiliza esos ensamblados. Este comportamiento solo se produce cuando se usan los constructores siguientes:

XmlSerializer.XmlSerializer(Type)

XmlSerializer.XmlSerializer(Type, String)

Si usa cualquiera de los otros constructores, se generan varias versiones del mismo ensamblado y nunca se descargan, lo que produce una pérdida de memoria y un rendimiento deficiente. La solución más sencilla es usar uno de los dos constructores mencionados anteriormente. De lo contrario, debe almacenar en caché los ensamblados en una instancia de Hashtable, como se muestra en el ejemplo siguiente.

Hashtable serializers = new Hashtable();

// Use the constructor that takes a type and XmlRootAttribute.
XmlSerializer s = new XmlSerializer(typeof(MyClass), myRoot);

// Implement a method named GenerateKey that creates unique keys
// for each instance of the XmlSerializer. The code should take
// into account all parameters passed to the XmlSerializer
// constructor.
object key = GenerateKey(typeof(MyClass), myRoot);

// Check the local cache for a matching serializer.
XmlSerializer ser = (XmlSerializer)serializers[key];
if (ser == null)
{
    ser = new XmlSerializer(typeof(MyClass), myRoot);
    // Cache the serializer.
    serializers[key] = ser;
}

// Use the serializer to serialize or deserialize.
Dim serializers As New Hashtable()

' Use the constructor that takes a type and XmlRootAttribute.
Dim s As New XmlSerializer(GetType([MyClass]), myRoot)

' Implement a method named GenerateKey that creates unique keys
' for each instance of the XmlSerializer. The code should take
' into account all parameters passed to the XmlSerializer
' constructor.
Dim key As Object = GenerateKey(GetType([MyClass]), myRoot)

' Check the local cache for a matching serializer.
Dim ser As XmlSerializer = CType(serializers(key), XmlSerializer)

If ser Is Nothing Then
    ser = New XmlSerializer(GetType([MyClass]), myRoot)
    ' Cache the serializer.
    serializers(key) = ser
End If

' Use the serializer to serialize or deserialize.

Serialización de ArrayList y lista genérica

XmlSerializer no puede serializar ni deserializar lo siguiente:

Serialización de enumeraciones de Long sin signo

No se puede instanciar XmlSerializer para serializar una enumeración si se cumplen las siguientes condiciones: la enumeración es de tipo unsigned long (ulong en C#) y la enumeración contiene algún miembro con un valor superior a 9.223.372.036.854.775.807. Por ejemplo, no se puede serializar lo siguiente.

public enum LargeNumbers: ulong
{
    a = 9223372036854775808
}
// At runtime, the following code will fail.
xmlSerializer mySerializer=new XmlSerializer(typeof(LargeNumbers));

Tipos obsoletos

La XmlSerializer clase no serializa objetos marcados como [Obsolete].

Constructores

Nombre Description
XmlSerializer()

Inicializa una nueva instancia de la clase XmlSerializer.

XmlSerializer(Type, String)

Inicializa una nueva instancia de la XmlSerializer clase que puede serializar objetos del tipo especificado en documentos XML y deserializar documentos XML en objetos del tipo especificado. Especifica el espacio de nombres predeterminado para todos los elementos XML.

XmlSerializer(Type, Type[])

Inicializa una nueva instancia de la XmlSerializer clase que puede serializar objetos del tipo especificado en documentos XML y deserializar documentos XML en el objeto de un tipo especificado. Si una propiedad o campo devuelve una matriz, el extraTypes parámetro especifica los objetos que se pueden insertar en la matriz.

XmlSerializer(Type, XmlAttributeOverrides, Type[], XmlRootAttribute, String, String, Evidence)
Obsoletos.

Inicializa una nueva instancia de la XmlSerializer clase que puede serializar objetos del tipo especificado en instancias de documento XML y deserializar instancias de documento XML en objetos del tipo especificado. Esta sobrecarga permite proporcionar otros tipos que se pueden encontrar durante una operación de serialización o deserialización, así como un espacio de nombres predeterminado para todos los elementos XML, la clase que se usará como elemento raíz XML, su ubicación y credenciales necesarias para el acceso.

XmlSerializer(Type, XmlAttributeOverrides, Type[], XmlRootAttribute, String, String)

Inicializa una nueva instancia de la XmlSerializer clase que puede serializar objetos de tipo Object en instancias de documento XML y deserializar instancias de documento XML en objetos de tipo Object. Cada objeto que se va a serializar puede contener instancias de clases, que esta sobrecarga invalida con otras clases. Esta sobrecarga también especifica el espacio de nombres predeterminado para todos los elementos XML y la clase que se va a usar como elemento raíz XML.

XmlSerializer(Type, XmlAttributeOverrides, Type[], XmlRootAttribute, String)

Inicializa una nueva instancia de la XmlSerializer clase que puede serializar objetos de tipo Object en instancias de documento XML y deserializar instancias de documento XML en objetos de tipo Object. Cada objeto que se va a serializar puede contener instancias de clases, que esta sobrecarga invalida con otras clases. Esta sobrecarga también especifica el espacio de nombres predeterminado para todos los elementos XML y la clase que se va a usar como elemento raíz XML.

XmlSerializer(Type, XmlAttributeOverrides)

Inicializa una nueva instancia de la XmlSerializer clase que puede serializar objetos del tipo especificado en documentos XML y deserializar documentos XML en objetos del tipo especificado. Cada objeto que se va a serializar puede contener instancias de clases, que esta sobrecarga puede invalidar con otras clases.

XmlSerializer(Type, XmlRootAttribute)

Inicializa una nueva instancia de la XmlSerializer clase que puede serializar objetos del tipo especificado en documentos XML y deserializar un documento XML en el objeto del tipo especificado. También especifica la clase que se va a usar como elemento raíz XML.

XmlSerializer(Type)

Inicializa una nueva instancia de la XmlSerializer clase que puede serializar objetos del tipo especificado en documentos XML y deserializar documentos XML en objetos del tipo especificado.

XmlSerializer(XmlTypeMapping)

Inicializa una instancia de la XmlSerializer clase utilizando un objeto que asigna un tipo a otro.

Métodos

Nombre Description
CanDeserialize(XmlReader)

Obtiene un valor que indica si se XmlSerializer puede deserializar un documento XML especificado.

CreateReader()

Devuelve un objeto usado para leer el documento XML que se va a serializar.

CreateWriter()

Cuando se reemplaza en una clase derivada, devuelve un escritor usado para serializar el objeto.

Deserialize(Stream)

Deserializa el documento XML contenido por el especificado Stream.

Deserialize(TextReader)

Deserializa el documento XML contenido por el especificado TextReader.

Deserialize(XmlReader, String, XmlDeserializationEvents)

Deserializa el objeto utilizando los datos contenidos por el especificado XmlReader.

Deserialize(XmlReader, String)

Deserializa el documento XML contenido por el estilo de codificación y especificado XmlReader .

Deserialize(XmlReader, XmlDeserializationEvents)

Deserializa un documento XML contenido por el especificado XmlReader y permite invalidar los eventos que se producen durante la deserialización.

Deserialize(XmlReader)

Deserializa el documento XML contenido por el especificado XmlReader.

Deserialize(XmlSerializationReader)

Deserializa el documento XML contenido por el especificado XmlSerializationReader.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
FromMappings(XmlMapping[], Evidence)
Obsoletos.

Devuelve una instancia de la XmlSerializer clase creada a partir de asignaciones de un tipo XML a otro.

FromMappings(XmlMapping[], Type)

Devuelve una instancia de la XmlSerializer clase de las asignaciones especificadas.

FromMappings(XmlMapping[])

Devuelve una matriz de XmlSerializer objetos creados a partir de una matriz de XmlTypeMapping objetos .

FromTypes(Type[])

Devuelve una matriz de objetos creados a partir de XmlSerializer una matriz de tipos.

GenerateSerializer(Type[], XmlMapping[], CompilerParameters)

Devuelve un ensamblado que contiene serializadores personalizados que se usan para serializar o deserializar el tipo o tipos especificados mediante las asignaciones y opciones y opciones especificadas del compilador.

GenerateSerializer(Type[], XmlMapping[])

Devuelve un ensamblado que contiene serializadores personalizados que se usan para serializar o deserializar el tipo o tipos especificados mediante las asignaciones especificadas.

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetXmlSerializerAssemblyName(Type, String)

Devuelve el nombre del ensamblado que contiene el serializador para el tipo especificado en el espacio de nombres especificado.

GetXmlSerializerAssemblyName(Type)

Devuelve el nombre del ensamblado que contiene una o varias versiones del XmlSerializer objeto especialmente creado para serializar o deserializar el tipo especificado.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
Serialize(Object, XmlSerializationWriter)

Serializa el objeto especificado Object y escribe el documento XML en un archivo mediante el especificado XmlSerializationWriter.

Serialize(Stream, Object, XmlSerializerNamespaces)

Serializa el especificado Object y escribe el documento XML en un archivo mediante el especificado Stream que hace referencia a los espacios de nombres especificados.

Serialize(Stream, Object)

Serializa el objeto especificado Object y escribe el documento XML en un archivo mediante el especificado Stream.

Serialize(TextWriter, Object, XmlSerializerNamespaces)

Serializa el especificado Object y escribe el documento XML en un archivo mediante los espacios de nombres especificados TextWriter y hace referencia a los espacios de nombres especificados.

Serialize(TextWriter, Object)

Serializa el objeto especificado Object y escribe el documento XML en un archivo mediante el especificado TextWriter.

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

Serializa el objeto especificado Object y escribe el documento XML en un archivo mediante los espacios de nombres XML y la codificación especificados XmlWriter.

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String)

Serializa el objeto especificado y escribe el documento XML en un archivo mediante los XmlWriter espacios de nombres y hace referencia al estilo de codificación y espacios de nombres especificados.

Serialize(XmlWriter, Object, XmlSerializerNamespaces)

Serializa el especificado Object y escribe el documento XML en un archivo mediante los espacios de nombres especificados XmlWriter y hace referencia a los espacios de nombres especificados.

Serialize(XmlWriter, Object)

Serializa el objeto especificado Object y escribe el documento XML en un archivo mediante el especificado XmlWriter.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Eventos

Nombre Description
UnknownAttribute

Se produce cuando XmlSerializer encuentra un atributo XML de tipo desconocido durante la deserialización.

UnknownElement

Se produce cuando XmlSerializer encuentra un elemento XML de tipo desconocido durante la deserialización.

UnknownNode

Se produce cuando XmlSerializer encuentra un nodo XML de tipo desconocido durante la deserialización.

UnreferencedObject

Se produce durante la deserialización de una secuencia XML codificada con SOAP, cuando XmlSerializer encuentra un tipo reconocido que no se usa o no se hace referencia.

Se aplica a

Seguridad para subprocesos

Este tipo es seguro para subprocesos.

Consulte también