sábado, 25 de octubre de 2014

Leer Archivos XML desde C#

Buenas tardes, el día de hoy les traigo la forma de como leer un archivo XML desde código C#. 

Esto es sencillo con una de las librerías que ya tiene Visual Studio integrada, System.Xml, para eso solo es necesario hacer un using en nuestro código “using System.Xml;” Y empezamos:

Tomando como base este pequeño XML con un nodo padre y uno hijo, donde hijo tiene una propieda, este debe de estar creado en una ruta y lo asignamos a una variable string ruta 
Ejemplo: 


string ruta = "C:\Prueba.xml";


<?xml version="1.0" encoding="UTF-8"?>
<Padre>
  <Hijo Saludar="Saludos"></Hijo>
</Padre>


//Creamos un objeto de tipo XmlDocumento
XmlDocument xDoc = new XmlDocument();
//Pasamos la ruta de nuestro XML a leer
xDoc.Load(ruta);

//Obtenemos el elemento padre con GetElementsByTagName por el nombre del tag y tendríamos que recorrerlo con un foreach XmlElement pero un XMl no puede llevar dos Tag raiz, asi que es más fácil con la siguiente instruccion
XmlNodeList PadrePorNombre = xDoc.GetElementsByTagName("Padre");

//Obtenemos el elemento padre sin conocer el nombre del tag
XmlElement Padre = xDoc.DocumentElement; //Nos dara el tap Padre


//Obtenemos los hijos del padre
XmlNodeList Hijos = Padre.ChildNodes;
//Recorremos los hijos para obtener su informacion
foreach (XmlElement Child in Hijos)
{
//Accedemos al atributo del hijo con GetAttribute y el nombre del atributo Este es útil cuando conocemos el nombre de nuestros nodos
       string hijo = Child.GetAttribute("Saludar"); //Nos da su valor “Saludos”

//Si no conocemos los atributos de nuestro hijo obtenemos sus atributos con .Attributes y lo asignamos a un XmlAttributeCollection
       XmlAttributeCollection Listahijos = Child.Attributes; 
       //Recomorremos los atributos de nuestro hijo para obtener sus valores, en caso que tuviera mas de un atributo nuestro hijo recorredira el ciclo foreach cada uno
       foreach (XmlAttribute att in Listahijos)
       {
                string campo = att.Name; //Nos da el nombre del atributo que sería Saludar
              string hijoatt = att.Value; // Nos da el valor del atributo “Saludos”
              //Nota nuestro hijo puede tener más hijos es decir que nuestro hijo sea padre y contenga hijos, para ellos seria cuestión de obtener los hijos Child.ChildNodes
        }
}

Espero les sea de utilidad, y si tiene alguna duda no duden.

Saludos cordiales!

No hay comentarios:

Publicar un comentario