Hola a todos, hoy os voy a explicar como podemos leer un XML en C#.
En C# para el tema de XML, tenemos una clase para tratar XML, tanto como leer y escribir. Esta clase es XmlDocument.
El xml que vamos a tratar es este:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
xml version="1.0" encoding="UTF-8" standalone="no"?> |
Lo primero es crear una instancia de XmlDocument:
|
1 |
XmlDocument doc = new XmlDocument(); |
Ahora debemos cargar un xml:
|
1 |
doc.Load("concesionario.xml"); |
La ruta del fichero esta en la carpeta bin/Debug de nuestro proyecto.
Para empezar a recorrer los hijos del nodo raiz (concesionario), es decir, el nodo coches.
|
1 2 3 4 |
foreach (XmlNode n1 in doc.DocumentElement.ChildNodes) { } |
Si el nodo hijo tiene mas elementos (hijos), recorremos los hijos de este nodo.
|
1 2 3 4 5 6 7 |
f (n1.HasChildNodes) { foreach (XmlNode n2 in n1.ChildNodes) { } } |
Ahora mismo, estamos en el nodo coche, que tiene un atributo llamado matricula, para obtenerlo lo hacemos con Attributes:
|
1 2 |
String matricula = n2.Attributes["matricula"].Value; Console.WriteLine("Matricula: " + matricula); |
El nodo coche, también tiene mas nodos, por lo que los recorremos.
|
1 2 3 4 |
foreach (XmlNode n3 in n2.ChildNodes) { Console.WriteLine(n3.Name + " " + n3.InnerText); } |
Con la propiedad Name nos da el nombre de la etiqueta e InnerText devuelve el texto interior.
Si ejecutamos el codigo, veremos esto:

Os dejo el ejemplo completo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace XML1 { class Program { static void Main(string[] args) { // Creo la instancia de xmldocument XmlDocument doc = new XmlDocument(); // carga el xml doc.Load("concesionario.xml"); // Recorro los hijos del nodo concesionario foreach (XmlNode n1 in doc.DocumentElement.ChildNodes) { // Si tiene nodos, recorro sus hijos if (n1.HasChildNodes) { foreach (XmlNode n2 in n1.ChildNodes) { // Obtengo el atributo matricula del nodo coche String matricula = n2.Attributes["matricula"].Value; Console.WriteLine("Matricula: " + matricula); // Nodos hijos del coche foreach (XmlNode n3 in n2.ChildNodes) { Console.WriteLine(n3.Name + " " + n3.InnerText); } } } } Console.ReadLine(); } } } |
Os dejo un video explicando el proceso:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta