Leer un archivo en XML con XML XMLTextReader y XmlDocument

23 enero, 2008 por Mr. FotoPex Dejar una respuesta »

 

 

Este es un ejemplo para leer archivos xml, probado en windows xp.

Como primer paso debemos tener un archivo XML que nos sirva para probar nuestra aplicación. Podemos crearlo con el código detallado abajo con el nombre de XMLPrueba.xml. Debemos crear este archivo en un editor como el NotePad, ya que necesitamos un archivo sin caracteres extraños.

VB.NET:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <usuarios>
  3. <name codigo="mtorres">
  4.    <nombre>Maria </nombre>
  5.    <apellido>Torres </apellido>
  6. </name>
  7. <name codigo="cortiz">
  8.    <nombre>Carlos </nombre>
  9.    <apellido>Ortiz </apellido>
  10. </name>
  11. </usuarios>

Luego de tener nuestro archivo XML creado podremos crear nuestro código en VB.NET

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

VB.NET:
  1. Imports System.IO
  2. Imports System.Xml
  3. Module ParsingUsingXmlTextReader
  4. Sub Main()
  5.    Dim m_xmlr As XmlTextReader
  6.    'Creamos el XML Reader
  7.    m_xmlr = New XmlTextReader("C:\XMLPrueba.xml")
  8.  
  9.    'Desabilitamos las lineas en blanco,
  10.    'ya no las necesitamos
  11.    m_xmlr.WhiteSpaceHandling = WhiteSpaceHandling.NONE
  12.  
  13.    'Leemos el archivo y avanzamos al tag de usuarios
  14.    m_xmlr.Read()
  15.  
  16.    'Leemos el tag usuarios
  17.    m_xmlr.Read()
  18.  
  19.    'Creamos la secuancia que nos permite
  20.    'leer el archivo
  21.    While Not m_xmlr.EOF
  22.       'Avanzamos al siguiente tag
  23.       m_xmlr.Read()
  24.  
  25.      'si no tenemos el elemento inicial
  26.      'debemos salir del ciclo
  27.      If Not m_xmlr.IsStartElement() Then
  28.         Exit While
  29.      End If
  30.  
  31.      'Obtenemos el elemento codigo
  32.      Dim mCodigo = m_xmlr.GetAttribute("codigo")
  33.      'Read elements firstname and lastname
  34.  
  35.      m_xmlr.Read()
  36.      'Obtenemos el elemento del Nombre del Usuario
  37.      Dim mNombre = m_xmlr.ReadElementString("nombre")
  38.  
  39.      'Obtenemos el elemento del Apellido del Usuario
  40.      Dim mApellido = m_xmlr.ReadElementString("apellido")
  41.  
  42.      'Escribimos el resultado en la consola,
  43.      'pero tambien podriamos utilizarlos en
  44.      'donde deseemos
  45.      Console.WriteLine("Codigo usuario: " & mCodigo _
  46.      & " Nombre: " & mNombre _
  47.      & " Apellido: " & mApellido)
  48.      Console.Write(vbCrLf)
  49.    End While
  50.  
  51.    'Cerramos la lactura del archivo
  52.    m_xmlr.Close()
  53.  
  54. End Sub
  55. 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.

VB.NET:
  1. Imports System.IO
  2. Imports System.Xml
  3. Module ParsingUsingXmlDocument
  4. Sub Main()
  5.    Try
  6.      Dim m_xmld As XmlDocument
  7.      Dim m_nodelist As XmlNodeList
  8.      Dim m_node As XmlNode
  9.  
  10.      'Creamos el "XML Document"
  11.      m_xmld = New XmlDocument()
  12.  
  13.      'Cargamos el archivo
  14.      m_xmld.Load("C:\XMLPrueba.xml")
  15.  
  16.      'Obtenemos la lista de los nodos "name"
  17.      m_nodelist = m_xmld.SelectNodes("/usuarios/name")
  18.  
  19.      'Iniciamos el ciclo de lectura
  20.      For Each m_node In m_nodelist
  21.        'Obtenemos el atributo del codigo
  22.        Dim mCodigo = m_node.Attributes.GetNamedItem("codigo").Value
  23.  
  24.        'Obtenemos el Elemento nombre
  25.        Dim mNombre = m_node.ChildNodes.Item(0).InnerText
  26.  
  27.        'Obtenemos el Elemento apellido
  28.        Dim mApellido = m_node.ChildNodes.Item(1).InnerText
  29.  
  30.        'Escribimos el resultado en la consola,
  31.        'pero tambien podriamos utilizarlos en
  32.        'donde deseemos
  33.        Console.Write("Codigo usuario: " & mCodigo _
  34.        & " Nombre: " & mNombre _
  35.        & " Apellido: " & mApellido)
  36.        Console.Write(vbCrLf)
  37.  
  38.      Next
  39.    Catch ex As Exception
  40.      'Error trapping
  41.      Console.Write(ex.ToString())
  42.    End Try
  43. End Sub
  44. End Module

 

Enlaces que te pueden interesar:

dotnetcr.com
Roy Rojas de http://www.dotnetcr.com

Publicidad

1 comentario

  1. ivan dice:

    Excelente me ayudo mucho!!!!

Deja un comentario