Guía Completa sobre Serialización XML y LINQ to XML en .NET

Introducción a la Serialización

La serialización es el proceso de convertir un objeto en una secuencia de bytes para almacenarlo o transferirlo. Su contraparte, la deserialización, permite reconstruir el objeto a partir de esos bytes. Este mecanismo es esencial para la persistencia de datos y la comunicación entre aplicaciones.

En .NET, existen varios tipos de serialización, pero en este artículo nos enfocaremos en la serialización XML y en el uso de LINQ to XML para manipular datos XML.


Serialización XML en .NET

XmlSerializer

XmlSerializer es una clase del espacio de nombres System.Xml.Serialization que permite serializar objetos en formato XML. Sus principales métodos son:

  • Serialize: Convierte un objeto en una representación XML.
  • Deserialize: Convierte un XML en un objeto .NET.

Pasos para Serializar un Objeto en XML

  1. Definir la clase del objeto a serializar.
  2. Instanciar un objeto de la clase XmlSerializer con el tipo del objeto a serializar.
  3. Usar el método Serialize para convertir el objeto a XML.

Ejemplo de Serialización

using System;
using System.IO;
using System.Xml.Serialization;

public class Persona {
    public string Nombre { get; set; }
    public string Domicilio { get; set; }
}

class Program {
    static void Main() {
        Persona p = new Persona { Nombre = "Pepe", Domicilio = "C/ Mayor,1" };
        XmlSerializer xmlS = new XmlSerializer(typeof(Persona));
        using (StreamWriter writer = new StreamWriter("persona.xml")) {
            xmlS.Serialize(writer, p);
        }
    }
}

Ejemplo de Deserialización

using (FileStream fs = new FileStream("persona.xml", FileMode.Open)) {
    Persona p = (Persona)xmlS.Deserialize(fs);
    Console.WriteLine(p.Nombre);
    Console.WriteLine(p.Domicilio);
}

Control de Serialización con Atributos

Podemos personalizar la serialización con atributos como:

  • [XmlElement(ElementName = "DomicilioParticular")] para cambiar el nombre del campo en XML.
  • [XmlIgnore] para excluir propiedades de la serialización.
public class Persona {
    [XmlElement(ElementName = "DomicilioParticular")]
    public string Domicilio { get; set; }
    [XmlIgnore]
    public string Nombre { get; set; }
}

Serialización Binaria

La serialización binaria es una alternativa más eficiente que XML cuando los datos solo se comparten entre aplicaciones .NET.

Uso de BinaryFormatter

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class Persona {
    public string Nombre { get; set; }
    public int Edad { get; set; }
}

class Program {
    static void Main() {
        Persona p = new Persona { Nombre = "Pepe", Edad = 30 };
        IFormatter formatter = new BinaryFormatter();
        using (Stream fs = new FileStream("datos.bin", FileMode.Create)) {
            formatter.Serialize(fs, p);
        }
    }
}

La deserialización se hace de la misma manera:

using (Stream fs = new FileStream("datos.bin", FileMode.Open)) {
    Persona p = (Persona)formatter.Deserialize(fs);
    Console.WriteLine(p.Nombre);
}

LINQ to XML en .NET

LINQ to XML es una tecnología que permite manipular documentos XML de forma eficiente y elegante utilizando LINQ.

Creación de XML con LINQ to XML

using System;
using System.Xml.Linq;

class Program {
    static void Main() {
        XElement articulo = new XElement("Articulo",
            new XAttribute("id", 1),
            new XElement("Nombre", "Laptop"),
            new XElement("Precio", 1200)
        );
        Console.WriteLine(articulo);
    }
}

Lectura y Modificación de XML

XDocument doc = XDocument.Load("datos.xml");
var nombres = from e in doc.Descendants("Articulo")
              select e.Element("Nombre").Value;
foreach (var nombre in nombres)
    Console.WriteLine(nombre);

Podemos modificar elementos:

doc.Element("Articulos").Element("Articulo").Element("Precio").SetValue(1300);
doc.Save("datos.xml");

Conclusión

La serialización XML y el uso de LINQ to XML son herramientas fundamentales en .NET para el almacenamiento y manipulación de datos. Si trabajas con aplicaciones que requieren persistencia de datos estructurados, dominar estas técnicas te permitirá optimizar el rendimiento y la organización del código.

Si quieres aprender más, revisa la documentación oficial de Microsoft.

white ceramic mug between apple magic keyboard and two flat screen computer monitors
Photo by Picography on Pexels.com

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad