CÓMO: Leer datos XML de una dirección URL mediante Visual C# .NET



No hay soporte técnico disponible para la versión Beta de este producto. Si desea información acerca de cómo obtener soporte técnico para una versión Beta, consulte la documentación incluida con los archivos del producto o busque en el sitio Web desde el que descargó la versión.




Para obtener una versión de Microsoft Visual Basic .NET de este artículo, consulte 301232 .

EN ESTA TAREA

Resumen

Este artículo describe cómo utilizar la clase XmlTextReader para leer Lenguaje de marcado extensible (XML) de una dirección URL (Localizador de recursos universal). La información transmitida puede provenir de diversos orígenes, como por ejemplo una secuencia de bytes de un servidor, un archivo o una clase TextReader.


Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los service pack recomendados que se necesitarán:
  • Microsoft Visual Studio .NET
En el presente artículo se da por supuesto que está familiarizado con los temas siguientes:
  • Terminología de XML
  • Crear y leer XML
  • Direcciones URL y creación de un extremo XML

Cómo leer datos XML de una dirección URL

Este ejemplo utiliza un archivo llamado Books.xml. Puede crear su propio archivo Books.xml, o puede utilizar el ejemplo que se incluye en QuickStarts con el kit de desarrollo de software (SDK) de .NET. Este archivo también está disponible para la descarga; consulte el primer elemento de la sección
Referenciasde este artículo para conocer la ubicación de descarga.
  1. Copie el archivo Books.xml en la carpeta \Inetpub\Wwwroot del equipo.
  2. Abra Visual Studio .NET.
  3. Crear una nueva aplicación de consola Visual C# .NET. Puede seguir con la sección
    Lista completa de códigoo continuar con estos pasos para generar la aplicación.
  4. Especifique la directiva using en el espacio de nombres Xml para que no se le pida calificar las declaraciones de la clase XmlTextReader más adelante en el código. Debe utilizar la directiva using antes que cualquier otra declaración.
    using System.Xml;
  5. Recupere la secuencia XML mediante una dirección URL. Las secuencias se utilizan para proporcionar independencia con respecto al dispositivo; por lo tanto, no se necesitarán cambios de programa si cambia el origen de una secuencia. Declare una constante para la dirección URL http://localhost/books.xml. Utilizará esta constante en el siguiente procedimiento con XmlTextReader. Agregue el siguiente código de ejemplo al procedimiento Main de la clase predeterminada:
    String URLString = " http://localhost/books.xml";
  6. Cree una instancia de la clase XmlTextReader y especifique la dirección URL. Generalmente, XmlTextReader se utiliza si necesita tener acceso a XML como datos sin procesar sin la carga de un Modelo de objetos de documentos (DOM); por lo tanto, XmlTextReader proporciona un mecanismo más rápido para leer XML. La clase XmlTextReader tiene diferentes constructores para especificar la ubicación de los datos XML. El código siguiente crea una instancia del objeto XmlTextReader y transfiere la dirección URL al constructor:
    XmlTextReader reader = new XmlTextReader (URLString);
  7. Lea XML. (Tenga en cuenta que este paso muestra un bucle básico exterior "while" y que los dos pasos siguientes describen cómo utilizar este bucle y cómo leer XML.) Después de que se haya cargado, XmlTextReader realiza lecturas secuenciales para moverse por los datos de XML y utiliza el método Read para obtener el siguiente registro. El método Read devuelve false si no hay más registros.
    while (reader.Read())
    {
    // Trabajar aquí en los datos.
    Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
  8. Inspeccionar los nodos. Para procesar los datos de XML, cada registro tiene un tipo de nodo que puede estar determinado por la propiedad NodeType. Las propiedades Nombre y Valor devuelven el nombre del nodo (los nombres del elemento y del atributo) y el valor del nodo (el texto del nodo) del nodo actual (o registro). 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. Tenga en cuenta que este ejemplo omite los atributos de los elementos.
    while (reader.Read())
    {
    switch (reader.NodeType)
    {
    case XmlNodeType.Element: // El nodo es un elemento.
    Console.Write("<" + reader.Name);
    Console.WriteLine(">");
    break;

    case XmlNodeType.Text: //Muestra el texto en cada elemento.
    Console.WriteLine (reader.Value);
    break;

    case XmlNodeType. EndElement: //Muestra el final del elemento.
    Console.Write("</" + reader.Name);
    Console.WriteLine(">");
    break; } }
  9. Inspeccionar los atributos. Los tipos de nodos de elementos pueden incluir una lista de nodos de atributos que están asociados con ellos. El método MovetoNextAttribute se mueve secuencialmente por 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.
    while (reader.Read())
    {
    switch (reader.NodeType)
    {
    case XmlNodeType.Element: // El nodo es un elemento.
    Console.Write("<" + reader.Name);

    while (reader.MoveToNextAttribute()) // Lee los atributos.
    Console.Write(" " + reader.Name + "='" + reader.Value + "'");
    Console.Write(">");
    Console.WriteLine(">");
    break;
    case XmlNodeType.Text: //Muestra el texto en cada elemento.
    Console.WriteLine (reader.Value);
    break;
    case XmlNodeType. EndElement: //Muestra el final del elemento.
    Console.Write("</" + reader.Name);
    Console.WriteLine(">");
    break;
    }
    }
  10. Construya y ejecute su proyecto.

Lista completa de código

using System;
using System.Xml;

namespace ReadXMLfromURL
{
/// <summary>
/// Descripción de resumen para Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
String URLString = "http://localhost/books.xml";
XmlTextReader reader = new XmlTextReader (URLString);

while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // El nodo es un elemento.
Console.Write("<" + reader.Name);

while (reader.MoveToNextAttribute()) // Lee los atributos.
Console.Write(" " + reader.Name + "='" + reader.Value + "'");
Console.Write(">");
Console.WriteLine(">");
break;
case XmlNodeType.Text: //Muestra el texto en cada elemento.
Console.WriteLine (reader.Value);
break;
case XmlNodeType. EndElement: //Muestra el final del elemento.
Console.Write("</" + reader.Name);
Console.WriteLine(">");
break;
}
}
}
}
}

Resultado de ejemplo

<bookstore>>
<book genre='autobiography' publicationdate='1981' ISBN='1-861003-11-0'>
<title>>
La autobiografía de Benjamin Franklin
</title>
<author>>
<first-name>>
Benjamin
</first-name>
<last-name>>
Franklin
</last-name>
</author>
<price>>
8.99
</price>
</book>
<book genre='novel' publicationdate='1967' ISBN='0-201-63361-2'>>
<title>>
El estafador
</title>
<author>>
<first-name>>
Herman
</first-name>
<last-name>>
Melville
</last-name>
</author>
<price>>
11.99
</price>
</book>
<book genre='philosophy' publicationdate='1991' ISBN='1-861001-57-6'>>
<title>>
Gorgias
</title>
<author>>
<name>>
Platón
</name>
</author>
<price>>
9.99
</price>
</book>
</bookstore>

REFERENCIAS


El archivo siguiente se puede descargar desde el Centro de descarga de Microsoft:
Para obtener más información, 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 la siguiente documentación de la biblioteca de clases de Microsoft .NET Framework:
Para obtener más información acerca de cómo utilizar XmlReader para leer datos de XML, consulte la siguiente documentación de la Guía del programador de Microsoft .NET Framework:
Propiedades

Id. de artículo: 307643 - Última revisión: 10 ago. 2004 - Revisión: 1

Comentarios