6 de febrero de 2010

LINQ to XML, Crear Archivo XML C#

Veamos mediante un ejemplo práctico y sencillo como crear un árbol XML con .NET (C#) y guardarlo o almacenarlo en disco.

En el .NET 3.5 se han agregado 3 nuevas clases (XDocument, XElement, XAttribute) relacionadas al espacio de nombre (namespace) System.Xml.Linq; con estas clases de .NET es muy simple crear una estructura XML y almacenarla en disco, veamos un ejemplo de como hacerlo, para ello usaremos C#.

Pero antes veamos el fichero XML que queremos generar

Archivo XML a Crear

<?xml version="1.0" encoding="utf-8"?>
<Contactos>
  <Contacto>
    <Nombre>Juan</Nombre>
    <EMail>juan@gmail.com</EMail>
    <Telefono Tipo="Móvil">666666666</Telefono>
    <Telefono Tipo="Trabajo">911111111</Telefono>
  </Contacto>
  <Contacto>
    <Nombre>Luis</Nombre>
    <EMail>luis@gmail.com</EMail>
    <Telefono Tipo="Móvil">666777777</Telefono>
  </Contacto>
  <Contacto>
    <Nombre>María</Nombre>
    <EMail>maria@gmail.com</EMail>
    <Telefono Tipo="Móvil">666888888</Telefono>
    <Telefono Tipo="Personal">91222222</Telefono>
  </Contacto>
</Contactos>

Código LINQ XML para crear Archivo

// Código para crear fichero XML usando LINQ 2 XML
private static void Linq2XmlCrearFicheroXml()
{
  XElement xml =
    new XElement("Contactos",
      new XElement("Contacto",
        new XElement("Nombre", "Juan"),
        new XElement("EMail", "juan@gmail.com"),
        new XElement("Telefono", new XAttribute("Tipo", "Móvil"), "666666666"),
        new XElement("Telefono", new XAttribute("Tipo", "Trabajo"), "911111111")),
      new XElement("Contacto",
        new XElement("Nombre", "Luis"),
        new XElement("EMail", "luis@gmail.com"),
        new XElement("Telefono", new XAttribute("Tipo", "Móvil"), "666777777")),
      new XElement("Contacto",
        new XElement("Nombre", "María"),
        new XElement("EMail", "maria@gmail.com"),
        new XElement("Telefono", new XAttribute("Tipo", "Móvil"), "666888888"),
        new XElement("Telefono", new XAttribute("Tipo", "Personal"), "91222222"))
    );
 
  XDocument contactosXml = new XDocument(xml);
  contactosXml.Save("Contactos.xml");
}

Otra forma de crear un archivo XML sería usando usando el siguiente código:

private static void Linq2XmlCrearFicheroXml2()
{
  string strXml = @"<Prueba>
                      <Nombre>Juan</Nombre>
                      <EMail>juan@gmail.com</EMail>
                      <Telefono Tipo='Móvil'>666666666</Telefono>
                      <Telefono Tipo='Trabajo'>911111111</Telefono>
                    </Prueba>";
 
  XElement xml = XElement.Parse(strXml);
   
  XDocument pruebaXml = new XDocument(xml);
  pruebaXml.Save("Prueba.xml");
}

Y así de simple resulta crear en .Net un archivo XML. Puedes usar cualquiera de las 2 alternativas, la que te resulte mas cómoda.

 

Artículos Relacionados: