Usar Visual C# para serializar un objeto en XML

En este artículo se proporciona un método para serializar un objeto en lenguaje de marcado extensible (XML) mediante Visual C#.

Versión del producto original:   Visual Studio
Número de KB original:   815813

Resumen

El método que se describe en este artículo es útil para conservar el estado de un objeto. El método también es útil para clonar un objeto mediante la deserialización de XML en un nuevo objeto.

Este artículo hace referencia a los siguientes espacios de nombres de la biblioteca de clases de Microsoft .NET Framework:

  • System.Xml
  • System.Xml.Serialization

Requisitos

En este artículo se supone que está familiarizado con los siguientes temas:

  • Visual Studio
  • Familiaridad general con XML
  • Familiaridad general con Visual C #

Serialización XML

La serialización es el proceso de tomar el estado de un objeto y almacenarlo de alguna manera. .NET Framework incluye objetos eficaces que pueden serializar cualquier objeto en XML. El System.Xml.Serialization espacio de nombres proporciona esta funcionalidad.

Siga estos pasos para crear una aplicación de consola que cree un objeto y, a continuación, serialice su estado en XML:

  1. En Visual C#, cree un nuevo proyecto de aplicación de consola.

  2. En el menú proyecto , seleccione Agregar clase para agregar una nueva clase al proyecto.

  3. En el cuadro de diálogo Agregar nuevo elemento , cambie el nombre de la clase a clsPerson.

  4. Seleccione Agregar. Se crea una nueva clase.

  5. Agregue el siguiente código después de la instrucción public class clsPerson .

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Cambie a la ventana código para Program.CS en Visual Studio.

  7. En el void Main método, declare y cree una instancia de la clsPerson clase:

    clsPerson p = new clsPerson();
    
  8. Establezca las propiedades del clsPerson objeto:

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. El Xml.Serialization espacio de nombres contiene una XmlSerializer clase que serializa un objeto a XML. Cuando se crea una instancia de XmlSerializer , se pasa el tipo de la clase que se desea serializar en su constructor:

    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
    
  10. El Serialize método se usa para serializar un objeto en XML. Serialize está sobrecargado y puede enviar resultados a un TextWriter Stream objeto, o XMLWriter . En este ejemplo, se envía el resultado a la consola:

    x.Serialize(Console.Out,p);
    Console.WriteLine();
    Console.ReadLine();
    

Enumerar código completo

using System;

public class clsPerson
{
    public  string FirstName;
    public  string MI;
    public  string LastName;
}

class class1
{
    static void Main(string[] args)
    {
        clsPerson p=new clsPerson();
        p.FirstName = "Jeff";
        p.MI = "A";
        p.LastName = "Price";
        System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
        x.Serialize(Console.Out, p);
        Console.WriteLine();
        Console.ReadLine();
    }
}

Comproba

Para comprobar que el proyecto funciona, presione CTRL + F5 para ejecutar el proyecto. Un clsPerson objeto se crea y se rellena con los valores especificados. Este estado se serializa en XML. La ventana de la consola muestra el código siguiente:

<?xml version="1.0" encoding="IBM437"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <FirstName>Jeff</FirstName>
    <MI>A</MI>
    <LastName>Price</LastName>
</clsPerson>

Solucionar problemas

El Xml.Serialization.XmlSerializer objeto realiza solo la serialización superficial. Si también desea serializar las variables privadas de un objeto u objetos secundarios, debe usar una serialización profunda.