Microsoft MVP

Email y Rss

email rss

Klout

Seguidores en facebook

Timeline de mi Twitter

Tienes preguntas?

Ideas de un Conejo
Más allá de los sistemas de información: (C#)=> videojuegos, soluciones a problemas interesantes y Sistemas Operativos
XNA
C#
Sistemas Operativos
Varios
Windows Phone
WinRT
XAML
Azure
HTML 5
Acerca de

C# – Consumir un XML o un RSS alojado en la web de manera sencilla

June 13th, 2010 by JuanK

Follow @JuanKRuiz

Muchas veces necesitamos leer contenidos RSS o XML desde la web, y lo necesitamos de manera rápida, ligera y fácil de usar.

Buscando a través de la internet se pueden conseguir varias soluciones de varios sabores diferentes.

 

En este artículo enseñare a crear un componente capaz de leer cualquier XML que se encuentre en la web con el fin de acceder a su información de manera sencilla y de paso explicaré que hacer cuando ese XML sea un RSS para sacarle mayor provecho.

 

El problema lo podemos fraccionar en 2 partes

  1. Obtener el XML o RSS de la web
  2. Acceder a esa información por medio de un componente conocido, un Dataset

OBTENER EL XML O RSS DE LA WEB

Para lograr este objetivo se hace necesario hacer uso de un objeto HttpWebRequest para crear un Request a la URL donde se encuentra alojado el XML y luego capturar la respuesta (Response).

public static DataSet GetXMLDataSet(string URL)
{
    HttpWebRequest xmlRequest = (HttpWebRequest)WebRequest.Create(URL);
    WebResponse xmlResponse = xmlRequest.GetResponse();  
}			

 

ACCEDER A ESA INFORMACION POR MEDIO DE UN COMPONENTE CONOCIDO, UN DATASET

Aunque ya tenemos el WebResponse este de por si no nos permite un acceso ‘multiuso’ a la información que contiene, pero ya que sabemos que nuestro WebResponse contiene información XML podemos aprovecharnos de eso para crear un Dataset. El Dataset se puede crear a partir de un Stream así que haremos uso del método GetResponseStream para obtenerlo, creamos un DataSet vacio y luego lo llenamos con ReadXml.

public static DataSet GetXMLDataSet2(string URL)
{
    HttpWebRequest xmlRequest = (HttpWebRequest)WebRequest.Create(URL);
    WebResponse xmlResponse = xmlRequest.GetResponse();
    Stream responseStream = xmlResponse.GetResponseStream();

    DataSet xmlData = new DataSet();
    xmlData.ReadXml(responseStream);
    return xmlData;
}			

Reduciendo un poco el código queda:

public static DataSet GetXMLDataSet(string URL)
{
    HttpWebRequest xmlRequest = (HttpWebRequest)WebRequest.Create(URL);
    DataSet xmlData = new DataSet();
    xmlData.ReadXml(xmlRequest.GetResponse().GetResponseStream());
    return xmlData;
}		

 

Ya estuvo, ahora es tiempo de sacarle provecho al DataSet.

 

NOTA ADICIONAL

Algunos RSS tienen estructuras un poco más complejas que pueden traer problemas al momento de crear el DataSet, usualmente este problema se manifiesta produciendo una excepción System.Data.DuplicateNameException , para evitar este problema es necesario indicarle al DataSet cual es la estructura correcta del RSS, para ello utilizamos ReadXmlSchema cargando el esquema XSD que describe la estructura de RSS 2.0, para obtenerlo basta con ir a esta página y bajarlo: RSS 2.0 Schema, más específicamente este link rss-2_0.xsd .

Lo adicionamos al proyecto, en mi caso lo he adicionado como recurso incrustado, el código incluyendo esta variante para el caso de RSS sería más o menos de esta forma:

/// <summary>
/// Se conecta a una URL que representa un archivo XML y convierte la información en un DataSet</summary>
/// <param name="URL" />URL del xml publicado en la web</param>
/// <returns>Dataset que representa los datos XML</returns>
public static DataSet GetXMLDataSet(string URL)
{
    HttpWebRequest xmlRequest = (HttpWebRequest)WebRequest.Create(URL);
    DataSet xmlData = new DataSet();
    xmlData.ReadXmlSchema(new XmlTextReader(Resources.rss_2_0, XmlNodeType.Document,null));
    xmlData.ReadXml(xmlRequest.GetResponse().GetResponseStream(), XmlReadMode.IgnoreSchema);
    return xmlData;
}
Print Friendly

Follow @JuanKRuiz

  • 4 Comentarios »
  • Publicado en la categoría 'C#'

4 comentarios to “C# – Consumir un XML o un RSS alojado en la web de manera sencilla ”


  • C# - Consumir RSS en componentes dinámicos para IE con AddIn Express | Ideas de un Conejo Says:
    June 14th, 2010 at 11:41 pm  

    [...] C# – Consumir un XML o un RSS alojado en la web de manera sencilla [...]

  • C# - 10 pasos para Consumir el RSS de Top news de "The Washington Post" en un Toolbar para IE - LANeros.com Says:
    June 19th, 2010 at 1:14 pm  

    [...] [...]

  • Javier Says:
    November 5th, 2012 at 11:00 pm  

    Resources.rss_2_0 me podrias indicar que es esto yo supongo que es dentro de Resources hay un rss que se llama rss_2_0 pero de donde lo sacas me podria explicar por favor

  • JuanK Says:
    November 5th, 2012 at 11:09 pm  

    Es RSS 2.0 Schema, más específicamente este link http://rss2schema.codeplex.com/ lo baje y lo volvi uno de los recursos de la aplicación, uno puede incluso tenerlo como archivo aparte.

Deja un comentario

Redes Sociales

Follow @JuanKRuiz
Answer Questions

Busca en el blog

Artículos Relacionados

  • C# – 10 pasos para Consumir el RSS de Top news de “The Washington Post” en un Toolbar para IE
  • C# – Easily consuming an XML or RSS feeds hosted on the web
  • C# – 10 steps to consume "The Washington Post" Top news RSS in an IE Toolbar
  • Artículos Relacionados

  • C# – 10 pasos para Consumir el RSS de Top news de “The Washington Post” en un Toolbar para IE
  • C# – Easily consuming an XML or RSS feeds hosted on the web
  • C# – 10 steps to consume "The Washington Post" Top news RSS in an IE Toolbar
  • Nube de Temas

    API - Azure - C# - codigo - Forms - IE - IE9 - Image - imagenes - IT - Microsoft - MVP - Pinned - PowerShell - Proceso - rendimiento - RSS - sistema - Sistemas Operativos - Site - Visual - WCF - Windows - Windows 8 - Windows Store - WinRT - WndProc - WPF - XAML - XNA

    Blogs recomendados

  • VBCodigoPocketPC Espacio para tratar temas de programacion para dispositivos moviles, Pocket PC, Compact Framework, Embbeded Visual Basic, Visual Basic.NET , C# (C Sharp)
  • Róbinson Moscoso Estaré publicando acá cosas sobre tecnologia .NET, situacioines cotidianas de las que voy aprendiendo… sirve como extensión de memoria.
  • .Net C# Blog de Nelsón Venegas
  • Warnov Microsoft Developer Evangelist
  • IT LIfe Blog de mi Hermano que esta en el lado claro: IT
  • Sorey Garcia Una chica del común con la firme intención de no serlo
  • Black Byte videojuegos, modelado y animación 3d
  • Road to IT World Cosas interesantes de IT
  • Marcela Chitiva Un poco de esto… un poco de aquello
  • Surviving the Nigth El mejor blog para aquellos que nos gustan los “internals”
  • Meta

    1. Log in
    2. WordPress

    Ideas de un Conejo is powered by Wordpress. Theme designed by Juan Carlos Ruiz.