Leer Archivo Xml y Mostrarlo en un RichTextBox
Fecha: 01/Oct/2004 (01/Oct/04)
|
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 SubTambien 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 RegionP.D.: No olvides calificar este �rticulo, es importante tu opini�n.
Fichero con el c�digo de ejemplo: sergio_LeerXml - Tama�o 9 KB