Leer Archivo Xml y Mostrarlo en un RichTextBox

 

Fecha: 01/Oct/2004 (01/Oct/04)
Autor: Sergioman --- supersergioman@hotmail.com

 


Este programa lo haremos principalmente usande 3 clases:

XmlTextReader: para manejar y leer el archivo Xml

FileOpenDialog: Para abrir el archivo Xml, a trávez de una ventana.

RichTextBox: para mostrar el contedio, formateado, del archivo Xml.


Para el form usaremos dos controles, usado para abrir el archivo y mostrar el contenido en el RichTextBox:

 

   Private Sub cmdOpenXml_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpenXml.Click
      'codigo para abrir dialogo de archivos
      '------------------------------------
      Dim myStream As Stream
      Dim myOpenFile As New OpenFileDialog

      'dando las caracteris al archivo que abriremos
      With myOpenFile
         'directorio inicial
         .InitialDirectory = "C:\"
         'archivos que se pueden abrir
         .Filter = "Archivos Xml (*.xml)|*.xml|All Files (*.*)|*.*"
         'indixe del archivo de lectura por defecto
         .FilterIndex = 1
         'restaurar el directorio de la apliación al cerrar el cuadro de dialogo
         .RestoreDirectory = True
      End With

      'si se encontro el archivo
      If myOpenFile.ShowDialog() = DialogResult.OK Then
         'abrir el archivo
         myStream = myOpenFile.OpenFile()
         'si no es nulo
         If Not (myStream Is Nothing) Then
            'que desamos hacer con el archivo
            Me.LeerXml(myStream)
            myStream.Close()
         End If
      End If
      
   End Sub

Tambien crearemos algunos metodos en el Form: Uno para leer el Xml y otro para escribir de una manera adecuadua en el RichTextBox

#Region "sergioman"

   Public Sub WriteRich(ByVal str As String, Optional ByVal niv As Int16 = 0)

      Dim esp As String = vbCrLf & ""

      For i As Integer = 1 To niv
         esp = esp + "    "
      Next

      'fucnion que escribe eb el cuadro de texto
      Me.RtxtXmlReader.AppendText(esp & str)
   End Sub

   Public Sub LeerXml(ByVal S As Stream)
      Dim reader As New XmlTextReader(S)

      'no he probrado codigo aun toy apuradito mi veija ta que 
      reader.WhitespaceHandling = WhitespaceHandling.None

      Dim num As Integer = 0

      'mientras haya que leer
      While reader.Read()
         Select Case reader.NodeType
            'leer elementos
         Case XmlNodeType.Element
               num += 1
               Me.WriteRich("<" & reader.Name & ">", num)
            Case XmlNodeType.Text      'leer texto
               Me.WriteRich(reader.Value, (num + 1))

            Case XmlNodeType.CDATA     'seccion CDATA
               Me.WriteRich("<![CDATA[" & reader.Value & "]]>")

            Case XmlNodeType.ProcessingInstruction    'instruccion de procesamiento
               Me.WriteRich("<?" & reader.Name & reader.Value & "?>")

            Case XmlNodeType.Comment
               Me.WriteRich("<!--reader.Value-->")

            Case XmlNodeType.XmlDeclaration
               Me.WriteRich("<?xml version='1.0'?>")
            Case XmlNodeType.Document
            Case XmlNodeType.DocumentType
               Me.WriteRich("<!DOCTYPE " & reader.Name & " [" & reader.Value & "]")
            Case XmlNodeType.EntityReference
               Me.WriteRich(reader.Name)
            Case XmlNodeType.EndElement
               Me.WriteRich("</" & reader.Name & ">", num)
               num -= 1

         End Select
      End While
   End Sub
#End Region
 

P.D.: No olvides calificar este árticulo, es importante tu opinión.


ir al índice

Fichero con el código de ejemplo: sergio_LeerXml - Tamaño 9 KB