martes, julio 16, 2019

Leer de un XML en .NET

En este artículo explicaremos como leer un archivo en XML en .Net, utilizando las clases XMLTextReader y XmlDocument, y las ventajas utilizar de cada una de ellas.

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.

<?xml version="1.0" encoding="UTF-8"?>
 <usuarios>
   <name codigo="mtorres">
     <nombre>Maria  </nombre>
     <apellido>Torres  </apellido>
   </name>
   <name codigo="cortiz">
     <nombre>Carlos  </nombre>
     <apellido>Ortiz  </apellido>
   </name>
 </usuarios>

Luego de tener nuestro archivo creado podremos continuar con nuestro código en VB.NET

Utilizando el XMLTextReader

Este formato es muy sencillo y para leer el achivo 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 TextReader
   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 secuancia 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 lactura 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 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 "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

Artículo relacionado :
Crea tu propio lector de RSS en tu página web

 




Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub

Redes Sociales

2,802FansMe gusta
343SeguidoresSeguir

Popular esta semana

Factura Electrónica Costa Rica

Encabezados del XML Factura Electrónica Costa Rica 4.3

Para generar el XML de la factura electrónica de Costa Rica se debe de seguir un formato específico para que estas sean...

Agregar el plugin de Facebook en un app de PhoneGap

En este ejemplo vamos a explicar como instalar y configurar el plugin de Facebook en nuestra aplicación para dispositivos móviles creada con PhoneGap y...

Número Consecutivo y Clave en la Factura Electrónica en Costa Rica

En este artículo explicamos como crear estos dos valores y también como crear el código de seguridad que forma parte de la clave.

Últimos artículos

Factura Electrónica Costa Rica

Encabezados del XML Factura Electrónica Costa Rica 4.3

Para generar el XML de la factura electrónica de Costa Rica se debe de seguir un formato específico para que estas sean...
C# - PDF417

Crear código PDF417 con iTextSharp y XZing en C# .NET

Para crear códigos PDF417 existen herramientas que podemos agregar a nuestra aplicaciones. En este ejemplo vamos explicar como utilizar iTextSharp y ZXing.

SQL Server: Error 3414, servicio no inicia

El error 3414 se produce generalmente cuando el motor de la base de datos SQL Server sufre algún evento imprevisto. Aquí lo solucionamos.
C# String Base64

Convertir String a Base64

Hemos tenido algunas consultas en estos días de cómo convertir Texto String a Base64 y viceversa, ahora por el tema de "Factura Electrónica", entonces decidimos hacer este pequeño ejemplo.