Uso de Visual C# para serializar un objeto en XML

En este artículo se proporciona un método sobre cómo 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 descrito 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 des serialización del XML a un nuevo objeto.

En este artículo se 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 temas siguientes:

  • 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 conservarlo 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 crea un objeto y, a continuación, serializa 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 código siguiente después de la instrucción de clase clsPerson pública.

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Cambie a la ventana de código de 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 en XML. Al crear una instancia de XmlSerializer, se pasa el tipo de la clase que 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. Serializar está sobrecargado y puede enviar la salida a un TextWriterobjeto , Streamo XMLWriter . En este ejemplo, se envía la salida a la consola:

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

Lista de código completa

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();
    }
}

Verificación

Para comprobar que el proyecto funciona, presione CTRL+F5 para ejecutar el proyecto. Se clsPerson crea un objeto y se rellena con los valores especificados. Este estado se serializa en XML. La ventana de 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 solo realiza una serialización superficial. Si también desea serializar las variables privadas de un objeto u objetos secundarios, debe usar la serialización profunda.