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.XmlSystem.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. El .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:
En Visual C#, cree un nuevo proyecto de aplicación de consola.
En el menú Project, seleccione Agregar clase para agregar una nueva clase al proyecto.
En el cuadro de diálogo Agregar nuevo elemento , cambie el nombre de la clase a clsPerson.
Seleccione Agregar. Se crea una nueva clase.
Agregue el código siguiente después de la instrucción de clase
clsPersonpública.public string FirstName; public string MI; public string LastName;Cambie a la ventana de código de Program.cs en Visual Studio.
En el
void Mainmétodo , declare y cree una instancia de laclsPersonclase :clsPerson p = new clsPerson();Establezca las propiedades del
clsPersonobjeto:p.FirstName = "Jeff"; p.MI = "A"; p.LastName = "Price";El
Xml.Serializationespacio de nombres contiene unaXmlSerializerclase que serializa un objeto en XML. Al crear una instancia deXmlSerializer, 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());El
Serializemétodo se usa para serializar un objeto en XML. Serializar está sobrecargado y puede enviar la salida a unTextWriterobjeto ,StreamoXMLWriter. 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.