C# – Consumir un XML o un RSS alojado en la web de manera sencilla
Este artículo es una copiar cruzada del artículo original publicado en mi blog:
C# – Consumir un XML o un RSS alojado en la web de manera sencilla
------------------------------
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
Obtener el XML o RSS de la web
- 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.