Como leer un feed RSS desde C

Esta semana estoy muy liado en el trabajo, no tengo mucho tiempo para mantener la calidad del blog, así que tendré que meter algún artículo de relleno, lo siento :D

Bromas aparte, en realidad este es un artículo que quería escribir hace días, pero no encontraba el momento.

Para entrar al tema y no dar los rodeos que acostumbro a dar, existe una librería para C, llamada libmrss, la cual proporciona un conjunto de funciones y estructuras de datos para leer de un feeds rss.

Dicha librería, utiliza libcurl para obtener los feeds y nxml para parsearlos, son sus únicas dependencias.

Para instalar la librería en ubuntu/debian basta con hacer:

apt-get install libmrss0-dev libmrss0

El paquete -dev es el que proporciona los .h para utilizarlos desde nuestro programa, el paquete normal, proporciona los .so, de la librería.

Una vez con la librería instalada, los pasos son sencillos, en primer lugar, incluimos mrss.h desde nuestro código:

#include <mrss.h>

Esto nos define las estructuras de datos y las funciones de la librería, para que las usemos en nuestro programa, en realidad, solo usaremos una función y 2 structs, la función es:

mrss_parse_url

Y las estructuras son el struct mrss_t y mrss_item_t, el primero representa a la información de un feed, y el segundo a los elementos del feed.

Lo interesante de esta librería, es lo sencilla que es de usar, vamos a ver un ejemplo:

#include <mrss.h>
#include <stdio.h>

int main() {
mrss_t *data=NULL;
mrss_error_t ret;
mrss_item_t *item;
ret=mrss_parse_url(“http://rooibo.wordpress.com/feed/&#8221;, &data);
if(ret != MRSS_OK || data == NULL) {
return 0;
}
item=data->item;
while (item) {
printf(“%s\n——————————-\n”,item->title);
item = item->next;
}
return 0;
}

Este miniejemplo hecho en un segundo,  lee las entradas del rss de este blog, y las printea por pantalla, se puede compilar así:

gcc -lmrss ejemplo.c -o ejemplo

Y se ejecuta sin argumentos. Como veis, es muy sencillo utilizar libmrss, la función mrss_parse_url rellena un puntero de tipo data, que dentro contiene un puntero a un struct de tipo mrss_item_t, en el cual tenemos el titulo de la noticia, descripción, etc y un puntero al siguiente elemento de tipo mrss_item_t, con los datos de la siguiente entrada del feed.

Para ver que contiene mrss_item_t aparte de title, podemos consultar la web de mrss, aqui.

Leer feds desde C sirve para muchas cosas, desde extender tu aplicación con soporte para algún tipo de feed, como para hacerse programas que hagan acciones con RSS en dispositivos empotrados, como la fonera.

Lo único negativo de esta librería es que no existe documentación alguna para ella, yo aprendí a usarla leyendo el mrss.h.

About these ads

1 Response to “Como leer un feed RSS desde C”


  1. 1 search engine optimization affiliate enero 10, 2013 en 10:41 pm

    Hi! Do you use Twitter? I’d like to follow you if that would be okay. I’m absolutely enjoying your blog
    and look forward to new posts.


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s





Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: