Entre Códigos


El blog de Rubén Cantón

Reflexiones de un cerebro en fuga y artículos sobre posicionamiento, e-marketing, usabilidad y otros tecnicismos.

greyimg

Leer datos XML mediante una URL desde .Net

Escrito por Ruben Cantón el Thursday, 7 de June del 2007
Más del mismo tema: taller, tecnologia

Como ya comenté en un post anterior, es cada vez mas frecuente que los distintos sites interactúen entre ellos, existen múltiples metodologías para llevar a cabo esta función dependiendo de la finalidad que se persigue, y, en el intercambio de información, el XML parece ser una de las opciones mas utilizadas.

Si programas en ASP.Net y tienes que acceder a información de otro web en formato XML, descubrirás que resulta bastante sencillo, ya que .Net incorpora toda una librería para realizar esta tarea sin algoritmos complejos.

Lo primero que has de hacer, por comodidad, es un imports de la librería System.Xml, tras eso declaramos un objeto XMLTextReader y cargamos en él la URL, algo así:

Imports System.Xml

Dim PaginaXML As New XmlTextReader ("String_URL")

Ahora debemos ir recorriendo todo el XML, utilizaremos un bucle Do While y a través de un Select determinaremos en que tipo de nodo nos encontramos. Los nodos de tipo Element son aperturas de etiqueta, los EndElement cierre, los Text el contenido entre etiquetas, etc. Puedes ver todos los tipos de nodo en la librería XmlNodeType de la librería System.Xml.

Dim PaginaXML As New XmlTextReader ("http://entrecodigos.com/a.xml")

Dim EtiquetaActual As String = ""

Do While (PaginaXML.Read())

Select Case reader.NodeType

Case XmlNodeType.Element : EtiquetaActual = PaginaXML.Name
Case XmlNodeType.EndElement : EtiquetaActual = ""
Case XmlNodeType.Text
If EtiquetaActual = "id" Then varId = PaginaXML.Value
If EtiquetaActual = "nombre" Then varNombre = PaginaXML.Value
If EtiquetaActual = "edad" Then varEdad = PaginaXML.Value

End Select

Loop

Como puedes ver en el ejemplo anterior, las propiedades Name y Value sirven para acceder al nombre o valor del nodo, en mi caso, utilizo una variable para saber en que etiqueta me encuentro y me aseguro de limpiar la variable al cerrar la etiqueta. Si lo que queremos es, además, recorrer las propiedades de una etiqueta podemos hacerlo en otro bucle While con el método MoveToNextAtribute y la propiedad HasAttributes o en un bucle For utilizando la propiedad AttributeCount:

Do While(PaginaXML.Read())
Select Case PaginaXML.NodeType
Case XmlNodeType.Element
If PaginaXML.HasAttributes Then
While (PaginaXML.MoveToNextAttribute())
varNombreProp = PaginaXML.Name
varValorProp = PaginaXML.Value
End While
End If
End Select
Loop

Bueno mas o menos eso es todo, lo demás es cuestión de usar tu ingenio para recorrer bucles.

Ya hay 3 comentarios. ¡Falta el tuyo!

Escríbe aquí tu opinión

Nombre (necesario)

Email (no se mostrará)

Web (opcional)

mygif
1. ivet
June 19th, 2009 at 6:39 pm

Hola! se ve muy sencillo para leer un xml. Pero como declaro las variables “varNombreProp” y “varValorprop”, las declare como string pero me sigue marcando que no estan declaradas, espero y me respondas…grs y saludos

mygif
June 20th, 2009 at 10:06 am

Como string te debería funcionar, quizás no las has declarado en el sitio adecuado o su ámbito es demasiado restringido.

También el .Net a veces da fallos, reinicia y mira si se arregla, pero lo anterior es más probable.

mygif
3. Yoshimitsu
August 17th, 2010 at 12:52 pm

Este tipo de lectura NO SIRVE en su totalidad:
Con un link como este_ Error 404

http://entrecodigos.com/su_madre../a.xml

vaya con el objeto read()… de vb.net
Un navegador si que lo interpreta pero vb.net no!!!!

¿Quieres más?

Temas del blog

Busca por Entre Códigos

 

Últimos comentarios

Últimos artículos

Blogroll

Centinelas carmesíes

Cerebros en fuga

Mis proyectos