Cómo leer XML desde un archivo mediante Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 301225 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E301225
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describe cómo utilizar la clase XmlTextReader para leer el lenguaje de marcado extensible (XML) desde un archivo. XmlTextReader proporciona análisis directo y creación de testigos de XML, e implementa la especificación XML 1.0 así como los espacios de nombres de la especificación del World Wide Web Consortium (W3C). Este artículo proporciona acceso de secuencias rápido y con creación de testigos a XML, en lugar de utilizar un modelo de objetos como XML Document Object Model (DOM).

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesitará:
  • Microsoft Visual Studio .NET
En este artículo se supone que está familiarizado con los temas siguientes:
  • Terminología de XML
  • Creación y lectura de un archivo XML

Cómo leer XML desde un archivo

En este ejemplo se utiliza un archivo denominado Books.xml. Puede crear su propio archivo Books.xml. Debe copiar el archivo Books.xml en la carpeta \Bin\Debug que se encuentra bajo la carpeta en la que creó este proyecto. Books.xml también se puede descargar; consulte la sección Referencias para saber cuál es la ubicación de descarga.
  1. Abra Visual Studio .NET.
  2. Cree una nueva aplicación de consola en Visual Basic .NET. Vaya directamente a la sección Lista de código completa o continúe con estos pasos para generar la aplicación.
  3. Asegúrese de que el proyecto contiene una referencia al ensamblado System.Xml.dll.
  4. Utilice la instrucción Imports del espacio de nombres Xml de forma que no tenga que suministrar declaraciones XmlTextReader más adelante en el código. Debe utilizar la instrucción Imports antes que cualquier otra declaración.
    Imports System.Xml
    					
  5. Construya una clase XmlTextReader con el archivo XML. Normalmente, la clase XmlTextReader se utiliza para tener acceso al archivo XML como datos sin formato, sin la sobrecarga de un DOM; por tanto, la clase XmlTextReader proporciona un mecanismo más rápido para leer XML. La clase XmlTextReader tiene constructores diferentes para especificar la ubicación de los datos XML. El siguiente código carga XmlTextReader desde el archivo Books.xml. Agregue el siguiente código para construir XmlTextReader en el procedimiento Main de Module1:
    Dim reader As XmlTextReader = New XmlTextReader ("books.xml")
    					
  6. Lea el archivo XML completo. Observe que este paso muestra un bucle "while" exterior; en los dos pasos siguientes se muestra cómo utilizar este bucle y cómo leer XML. Una vez cargado, XmlTextReader realiza lecturas secuenciales para moverse entre los datos XML y utiliza el método Read para obtener el registro siguiente. El método Read devuelve un valor falso si no hay ningún registro más.
    Do While (reader.Read())
        ' Hay que trabajar un poco los datos.
        Console.WriteLine(reader.Name)
    Loop
    
    ' Ha finalizado la lectura del archivo XML.
    Console.ReadLine() 'Pause
    					
  7. Inspeccione los nodos. Para procesar los datos XML, cada registro tiene un tipo de nodo que puede determinarse a partir de la propiedad NodeType. Las propiedades Name y Value devuelven el nombre del nodo (los nombres de elemento y atributo) y el valor (texto) del nodo (o registro) actual. La enumeración NodeType determina el tipo de nodo. El siguiente código de ejemplo muestra el nombre de los elementos y el tipo de documento. Observe que en este ejemplo se pasan por alto los atributos de los elementos.
    Do While (reader.Read())
    Select Case reader.NodeType
    Case XmlNodeType.Element 'Mostrar comienzo del elemento.
    Console.Write("<" + reader.Name)
    Console.WriteLine(">")
    Case XmlNodeType.Text 'Mostrar el texto de cada elemento.
    Console.WriteLine(reader.Value)
    Case XmlNodeType.EndElement 'Mostrar final del elemento.
    Console.Write("</" + reader.Name)
    Console.WriteLine(">")
    End Select
    Loop
    					
  8. Inspeccione los atributos. Los tipos de nodo de elemento pueden incluir una lista de nodos de atributo asociados a ellos. El método MovetoNextAttribute recorre secuencialmente cada atributo del elemento. Utilice la propiedad HasAttributes para probar si el nodo tiene algún atributo. La propiedad AttributeCount devuelve el número de atributos del nodo actual.
    Do While (reader.Read())
    Select Case reader.NodeType
    Case XmlNodeType.Element 'Mostrar comienzo del elemento.
    Console.Write("<" + reader.Name)
             If reader.HasAttributes Then 'If attributes exist
             	While reader.MoveToNextAttribute() 
    					'Mostrar valor y nombre del atributo
    Console.Write(" {0}='{1}'", reader.Name, reader.Value)
    End While
    End If
    Console.WriteLine(">")
    Case XmlNodeType.Text 'Mostrar el texto de cada elemento.
    Console.WriteLine(reader.Value)
    Case XmlNodeType.EndElement 'Mostrar final del elemento.
    Console.Write("</" + reader.Name)
    Console.WriteLine(">")
    End Select
    Loop
    					
  9. Guarde y cierre el proyecto.

Lista de código completa

Imports System.Xml
Module Module1

    Sub Main()
        Dim reader As XmlTextReader = New XmlTextReader ("books.xml")

        Do While (reader.Read())
            Select Case reader.NodeType
                Case XmlNodeType.Element 'Mostrar comienzo del elemento.
                    Console.Write("<" + reader.Name)
                    If reader.HasAttributes Then 'If attributes exist
                        While reader.MoveToNextAttribute()
                            'Mostrar valor y nombre del atributo
                            Console.Write(" {0}='{1}'", reader.Name, reader.Value)
                        End While
                    End If
                    Console.WriteLine(">")
                Case XmlNodeType.Text 'Mostrar el texto de cada elemento.
                    Console.WriteLine(reader.Value)
                Case XmlNodeType.EndElement 'Mostrar final del elemento.
                    Console.Write("</" + reader.Name)
                    Console.WriteLine(">")
            End Select
        Loop
        Console.ReadLine()

    End Sub

End Module
				

Salida

<bookstore>
<book>
<title>
Autobiografía de Benjamin Franklin
</title>
<author>
<first-name>
Benjamin
</first-name>
<last-name>
Franklin
</last-name>
</author>
<price>
8.99
</price>
</book>
<book>
<title>
El estafador
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book>
<title>
Gorgias
</title>
<author>
<name>
Platón
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>
				

Referencias

El siguiente archivo se puede descargar del Centro de descarga de Microsoft:
Contraer esta imagenAmpliar esta imagen
Descargar
Descargar ahora Books.xml
Para obtener más información al respecto, consulte el artículo "XML in .NET: NET Framework XML Classes and C# Offer Simple, Scalable Data Manipulation" de MSDN Magazine en el siguiente sitio web de Microsoft:
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx
Para obtener más información acerca de la clase XmlReader, consulte el siguiente sitio web de la biblioteca de clases de Microsoft .NET Framework:
http://msdn.microsoft.com/es-es/library/system.xml.xmlreader(vs.71).aspx
Para obtener más información acerca de cómo utilizar XmlReader para leer datos XML, consulte la siguiente documentación de la Guía de desarrolladores de Microsoft .NET Framework:
http://msdn2.microsoft.com/es-es/library/aa720470(VS.71).aspx
 
Nota: es un artículo de "PUBLICACIÓN RÁPIDA" creado directamente por la organización de soporte técnico de Microsoft. La información aquí contenida se proporciona como está, como respuesta a problemas que han surgido. Como consecuencia de la rapidez con la que lo hemos puesto disponible, los materiales podrían incluir errores tipográficos y pueden ser revisados en cualquier momento sin previo aviso. Vea las Condiciones de uso para otras consideraciones

Propiedades

Id. de artículo: 301225 - Última revisión: martes, 02 de julio de 2013 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palabras clave: 
kbdownload kbhowtomaster KB301225

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com