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