C# – Leer archivo XML

Te mostramos como leer un archivo o fichero XML en C# usando XmlDocument, el código es el siguiente:

using System;
using System.Xml;
//decodigo.com
namespace LeerArchivoXML
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("D:\\rutaArhivos\\archivo.xml");

            foreach (XmlNode node in doc.DocumentElement.ChildNodes)
            {
                String id = node.Attributes["id"].Value;
                Console.WriteLine("id: " + id);

                if (node.HasChildNodes)
                {
                    for (int i = 0; i < node.ChildNodes.Count; i++)
                    {
                        Console.WriteLine(node.ChildNodes[i].Name + " : " + node.ChildNodes[i].InnerText);
                    }
                }
            }

            Console.ReadKey();
        }
    }
}




El archivo XML que usaremos como ejemplo tiene la siguiente estructura:

<?xml version="1.0" encoding="UTF-8"?>
<empresa>
  <empleado id="1">
    <nombre>Empleado 1</nombre>
    <estatus>activo</estatus>
  </empleado>
  <empleado id="2">
    <nombre>Empleado 2</nombre>
    <estatus>activo</estatus>
  </empleado>
  <empleado id="3">
    <nombre>Empleado 3</nombre>
    <estatus>activo</estatus>
  </empleado>
</empresa>

Como puedes ver se trata de un XML sencillo.  En este archivo sólo tenemos tres nodos “empleado” dentro de uno raiz llamado “empresa“, con un atributo “id” y dentro de empleado otros dos nodos llamados “nombre” y “estatus“.

Debes poner atención en estas líneas, donde se hace la carga del archivo:

            XmlDocument doc = new XmlDocument();
            doc.Load("D:\\rutaArchivo\\archivo.xml");

Y en estas otras, donde por medio de un loop foreach navegamos sobre el arreglo de nodos XML del nodo raiz “empresa“, es decir, de cada nodo “empleado” posteriormente obtenemos la información del empleado en otro ciclo for para el nombre y el estatus.  No pierdas de vista como obtenemos también el atributo “id” con la ayuda de Attributes.

            foreach (XmlNode node in doc.DocumentElement.ChildNodes)
            {
                String id = node.Attributes["id"].Value;
                Console.WriteLine("id: " + id);

                if (node.HasChildNodes)
                {
                    for (int i = 0; i < node.ChildNodes.Count; i++)
                    {
                        Console.WriteLine(node.ChildNodes[i].Name + " : " + node.ChildNodes[i].InnerText);
                    }
                }
            }

Si ejecutamos el código esto es lo que obtendremos en consola.

Esperamos que este ejemplo te sea de utilidad.