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:
En Visual C#, cree un nuevo proyecto de 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 de 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();
}
}
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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de