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 original del producto: 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 des serializando el XML de nuevo en 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 da por supuesto que está familiarizado con los temas siguientes:
- Visual Studio
- Familiaridad general con XML
- Conocimientos generales de 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 cree un objeto y, a continuación, serialice su estado en XML:
En Visual C#, cree un proyecto aplicación de consola.
En el menú Proyecto , 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
clsPerson
pública.public string FirstName; public string MI; public string LastName;
Cambie a la ventana de código para Program.cs en Visual Studio.
En el
void Main
método , declare y cree una instancia de laclsPerson
clase :clsPerson p = new clsPerson();
Establezca las propiedades del
clsPerson
objeto :p.FirstName = "Jeff"; p.MI = "A"; p.LastName = "Price";
El
Xml.Serialization
espacio de nombres contiene unaXmlSerializer
clase 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
Serialize
método se usa para serializar un objeto en XML. Serializar está sobrecargado y puede enviar la salida a unTextWriter
objeto ,Stream
oXMLWriter
. 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();
}
}
Comprobació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 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>
Solución de problemas
El Xml.Serialization.XmlSerializer
objeto solo realiza la serialización superficial. Si también desea serializar las variables privadas de un objeto o objetos secundarios, debe usar la serialización profunda.