Supongamos que tenemos la siguiente estructura dentro de un archivo XML:
<?xml version="1.0" encoding="UTF-8"?> <songs> <song id="254f84d" artist="Chris Cornell" title="Scream"/> <song id="6747116" artist="Lost Prophets" title="I Don't Know"/> <song id="254f84d" artist="Inner Circle" title="Bad Boys"/> <song id="125a8bd" artist="Slipknot" title="Dead Memories"/> <song id="1e7c9d5" artist="VAST" title="Don't Take Your Love Away"/> </songs>
...y queremos acceder a los atributos de todos los nodos llamados song, estos atributos son id, artist y title.
Para mostrar como se lográ esto desde VB.NET, primero creamos un nuevo proyecto del tipo Console Application o Aplicación de Consola.
En la primera linea añadimos:Imports System.Xml
...esto nos permitira hacer uso de las Clases XmlDocument, XmlNodeList, XmlNode y XmlAttributeCollection.
Dentro de nuestro Main() agregamos:Dim Xml As XmlDocument Dim NodeList As XmlNodeList Dim Node As XmlNode Try Xml = New XmlDocument() Xml.Load("C:\xmlfile.xml") NodeList = Xml.SelectNodes("/songs/song") Console.WriteLine("Nodos por Leer: " & NodeList.Count & vbNewLine) For Each Node In NodeList With Node.Attributes Console.WriteLine("ID: " & .GetNamedItem("id").Value) Console.WriteLine("Artist: " & .GetNamedItem("artist").Value) Console.WriteLine("Title: " & .GetNamedItem("title").Value) Console.Write(vbNewLine) End With Next Catch ex As Exception Console.WriteLine(ex.GetType.ToString & vbNewLine & ex.Message.ToString) Finally Console.Read() End Try
- El método Load de XmlDocument nos permite cargar el XML desde un archivo que se encuentre en nuestro PC o en Internet; pueden hacer la prueba con este archivo. Si en lugar del método Load usaramos LoadXml, este nos permitiría cargar el XML desde una cadena de texto
- El método SelectNodes de XmlDocument selecciona una lista de nodos que coinciden con la expresión XPath
- La propiedad Count de XmlNodeList obtiene el número de nodos que fueron seleccionados con SelectNodes
- La propiedad Attributes de XmlNode obtiene un objeto XmlAttributeCollection que contiene los atributos de un nodo.
- El método GetNamedItem de XmlAttributeCollection nos permite acceder a los atributos de un nodo usando el nombre del atributo
- Una captura del Código
Muy bien explicado. Me parecía imposible leer un xml con lo sencillo que lo has mostrado
ResponderEliminar