Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

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

Este artículo se publicó anteriormente con el número E301225
Para obtener una versión de este artículo para Microsoft Visual C# .NET, consulte 307548.

EN ESTA TAREA

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).

back to the top

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
back to the top

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.NodeTypeCase 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 SelectLoop					
  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.NodeTypeCase 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 atributoConsole.Write(" {0}='{1}'", reader.Name, reader.Value)End WhileEnd IfConsole.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 SelectLoop					
  9. Guarde y cierre el proyecto.
back to the top

Lista de código completa

Imports System.XmlModule 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 SubEnd 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>				
back to the top
Referencias
El siguiente archivo se puede descargar del Centro de descarga de Microsoft:
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: 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: 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:  back to the top
dotnet xml
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: 07/02/2013 13:06:00 - Revisión: 1.0

  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • kbdownload kbhowtomaster KB301225
Comentarios