Ejemplo sencillo para consumir feeds con Java

Las líneas que escribo en Java son cada vez más esporádicas y eso se nota al momento de empezar, porque cada vez que abro el Eclipse (para trabajar en Java, pues para C lo uso más seguido) es un volver a empezar.
El motivo que me llevó esta vez a escribir algo fue la liberación de Rome 1.0, una librería que se ha convertido hace tiempo en un estándar de facto para consumir y producir feeds.

feeds

El ejemplo será básicamente un lector sencillo de feeds. Para empezar el mismo ¿Que necesitamos?

El ejemplo consiste en una clase Consumer con su constructor y un método print. Además, un método main para instanciar a Consumer con una URL (que recibirá como argumento) del feed que deseamos leer.
El código es bastante legible y fácil de digerir. Consiste en crear un feed (SyndFeed) y llenar el objeto a partir de una “entrada de feed” (SyndFeedInput) que completará las propiedades del objeto a partir de la lectura de un XML (XmlReader) que no es otro que el de la URL enviada por argumento.
Finálmente, para leer las entradas del feed creamos una lista de “entradas de feeds” y un iterador sobre la misma para obtener datos como el título, descripción, autor, etc.

[JAVA]
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

/**
* Consumer class from RSS/Atom feed type.
*
* @author LuAuF
*/

public class Consumer {

SyndFeed feed;

/**
* Class constructor
*
* @param url: url path to consume
*/
public Consumer(String url) {
super();
try {
URL feedUrl = new URL(url);

SyndFeedInput input = new SyndFeedInput();
feed = input.build(new XmlReader(feedUrl));

} catch (Exception ex) {
ex.printStackTrace();
System.out.println(“ERROR: “+ex.getMessage());
}
}

/**
* print method
* Scroll down the list of entries and displays the feed title, author and description
*/
void print () {

//feeds list
List entradas = new ArrayList();
entradas = feed.getEntries();

//list iterator
Iterator it = entradas.iterator();

while (it.hasNext()) {
SyndEntry entrada = it.next();
System.out.println(“Titulo……: ” + entrada.getTitle() );
System.out.println(“Descripción.: ” + entrada.getDescription() );
System.out.println(“Autor…….: ” + entrada.getAuthor() );
}
}

public static void main(String[] args) {

Consumer feed = new Consumer (args[0]);
feed.print();
}
}

[/JAVA]

Recuerda, si corres el código desde Eclipse, pasar un argumento (por ejemplo: http://feeds.feedburner.com/luauf) en la solapa “Arguments” de la ventana de “Creación, administración y cofiguración de ejecución” luego de ejecutar “Run…”

arguments

Tags: , , , , , ,


  • perro

    muy bueno esto, me va a servir

    Reply

  • Jnew

    Bueno, estoy atorado con rome…tu ejemplo me ha ayudado, pero no puedo resivir el xml del clima en yahoo…no logro hacer la conexion en netbeans…

    Reply

  • Williams

    Muchas gracias buen aporte.

    Reply

  • ivan

    En Netbeans como se haria, ya he añadido el jar desde propiedades del proyecto, pestaña librerias y ahi directamente he añadido el archivo y lo he cargado pero no me funciona, al importar
    import com.sun.syndication.feed.synd.SyndEntry;
    import com.sun.syndication.feed.synd.SyndFeed;
    import com.sun.syndication.io.SyndFeedInput;
    import com.sun.syndication.io.XmlReader;

    cada linea que importo en la palabra com me aparece subrayado de rojo y me dice :
    package com.sun.syndication.feed.synd does not exist

    como se tiene que hacer para que pueda funcionar

    estoy haciendo un proyecto de un applet que cargue un RSS y lo muestre en Jcombobox

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.