Ver Mensaje Individual
  #9 (permalink)  
Antiguo 25/06/2009, 18:51
Avatar de jaullo
jaullo
 
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Thread lectura de archivo

Utilizando el XMLTextReader
Este formato es muy sencillo y para leer el archivo XML debemos hacerlo secuencialmente, línea por línea.

Imports System.IO
Imports System.Xml
Module ParsingUsingXmlTextReader
Sub Main()
Dim m_xmlr As XmlTextReader
'Creamos el XML Reader
m_xmlr = New XmlTextReader("C:\XMLPrueba.xml")

'Desabilitamos las lineas en blanco,
'ya no las necesitamos
m_xmlr.WhiteSpaceHandling = WhiteSpaceHandling.NONE

'Leemos el archivo y avanzamos al tag de usuarios
m_xmlr.Read()

'Leemos el tag usuarios
m_xmlr.Read()

'Creamos la secuencia que nos permite
'leer el archivo
While Not m_xmlr.EOF
'Avanzamos al siguiente tag
m_xmlr.Read()

'si no tenemos el elemento inicial
'debemos salir del ciclo
If Not m_xmlr.IsStartElement() Then
Exit While
End If

'Obtenemos el elemento codigo
Dim mCodigo = m_xmlr.GetAttribute("codigo")
'Read elements firstname and lastname

m_xmlr.Read()
'Obtenemos el elemento del Nombre del Usuario
Dim mNombre = m_xmlr.ReadElementString("nombre")

'Obtenemos el elemento del Apellido del Usuario
Dim mApellido = m_xmlr.ReadElementString("apellido")

'Escribimos el resultado en la consola,
'pero tambien podriamos utilizarlos en
'donde deseemos
Console.WriteLine("Codigo usuario: " & mCodigo _
& " Nombre: " & mNombre _
& " Apellido: " & mApellido)
Console.Write(vbCrLf)
End While

'Cerramos la lectura del archivo
m_xmlr.Close()

End Sub
End Module
Utilizando el XmlDocument
Este formato es mas complejo y nos permite recorrer los nodos sin tener que utilizar una lectura secuencial. Definitivamente este formato es más eficiente que el anterior principalmente para documentos XML muy grandes.
Imports System.IO
Imports System.Xml
Module ParsingUsingXmlDocument
Sub Main()
Try
Dim m_xmld As XmlDocument
Dim m_nodelist As XmlNodeList
Dim m_node As XmlNode

'Creamos el "XML Document"
m_xmld = New XmlDocument()

'Cargamos el archivo
m_xmld.Load("C:\XMLPrueba.xml")

'Obtenemos la lista de los nodos "name"
m_nodelist = m_xmld.SelectNodes("/usuarios/name")

'Iniciamos el ciclo de lectura
For Each m_node In m_nodelist
'Obtenemos el atributo del codigo
Dim mCodigo = m_node.Attributes.GetNamedItem("codigo").Value

'Obtenemos el Elemento nombre
Dim mNombre = m_node.ChildNodes.Item(0).InnerText

'Obtenemos el Elemento apellido
Dim mApellido = m_node.ChildNodes.Item(1).InnerText

'Escribimos el resultado en la consola,
'pero tambien podriamos utilizarlos en
'donde deseemos
Console.Write("Codigo usuario: " & mCodigo _
& " Nombre: " & mNombre _
& " Apellido: " & mApellido)
Console.Write(vbCrLf)

Next
Catch ex As Exception
'Error trapping
Console.Write(ex.ToString())
End Try
End Sub
End Module