Cómo leer XML en C#

En varias ocasiones debemos de leer archivos XML en C# para obtener los datos que almacena, ya que estos archivos son utilizados para esto.

Los XML aun son muy utilizados en la tecnología y sobre todo como archivos de almacenamiento, por ejemplo, en los sistemas de facturación.

Crear XML

Primera vamos a crear un archivo con el formato .xml, lo vamos a ubicar en el disco raíz o C; en este ejemplo estaré utilizando la siguiente ruta: C:\Pruebas\archivoxml.xml

Coloca el siguiente contenido al XML que acabas de crear:

<?xml version="1.0" encoding="utf-8" ?>
<empresa>
  <oficina id="1">
    <ubicacion>Direccion oficina 1</ubicacion>
  </oficina>
  <oficina id="2">
    <ubicacion>Direccion oficina 2</ubicacion>
  </oficina>
</empresa>

Ahora que ya tenemos el XML, procederemos a ver como leerlo desde una aplicación con C#.

Podría interesarte Consultar valores de un XML en SQL Server  

Cómo leer un XML

Haciendo uso de las tecnologías de LINQ podemos navegar por la estructura de un XML sin utilizar mucho código, como lo verán a continuación.

Abrimos o creamos una aplicación de consola con lenguaje C# en Visual Studio; en la clase Program.cs agregamos el espacio de nombre “using System.Xml.Linq”.

Utilizando el siguiente código capturamos el XML indicando la ubicación de nuestro archivo.

XDocument nodoRaiz = XDocument.Load(@"C:\Pruebas\archivoxml.xml", LoadOptions.None);

Ahora lo que necesito son los nodos (oficina) que están dentro del nodo raíz (empresa), aplicaremos lo siguiente.

IEnumerable<XElement> nodo = nodoRaiz.Descendants("oficina");

Ya que tenemos los elementos de los nodos de oficina en un enumerable, vamos a obtener ahora los datos que se almacenan. Utilizaremos un ciclo Foreach para esta tarea de la siguiente manera.

foreach (XElement ele in nodo)
{
    Console.WriteLine("Atributo del nodo oficina: "+ ele.Attribute("id").Value);
    Console.WriteLine("Valor del nodo ubicacion: " + ele.Element("ubicacion").Value);
}

Recorremos los elementos del nodo mediante el ciclo y utilizando las siguientes propiedades capturamos los datos:

  • ele.Attribute(“id”).Value, lo utilizamos para obtener el valor del tributo id del nodo de oficina. Cambiando lo que esta entre comillas podemos obtener el valor de otro atributo de oficina.
  • ele.Element(“ubicacion”).Value, utilizado para obtener el valor del nodo ubicacion, lo que está entre esas etiquetas.

El código completo para hacer la prueba quedaría de la siguiente manera:

XDocument nodoRaiz = XDocument.Load(@"C:\Pruebas\archivoxml.xml", LoadOptions.None);
IEnumerable<XElement> nodo = nodoRaiz.Descendants("oficina");

foreach (XElement ele in nodo)
{
    Console.WriteLine("Atributo del nodo oficina: "+ ele.Attribute("id").Value);
    Console.WriteLine("Valor del nodo ubicacion: " + ele.Element("ubicacion").Value);
}

Console.ReadLine();

Ejecutemos el proyecto para ver los resultados de lo que acabamos de escribir; obtendremos lo que vemos a continuación.

Cómo leer XML en C#

Podría interesarte Como leer archivos JSON en C#  

Cómo pueden notar no requerimos de mucho código para obtener los datos, utilizando LINQ de XML prácticamente nos facilita leer estos archivos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *