17 novembro 2008

ROME: Para Ler RSS Fácil.


O Rome é um conjunto de ferramentas para ler, gerar e publicar feeds Atom e RSS. O núcleo de sua API, depende somente do JDOM e suporta formatos como RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, and Atom 1.0.

Neste post irei demonstrar o código para leitura de RSS/Atom, que com o ROME é muito simples. A classe abaixo contém um exemplo básico disto imprimindo data de publicação, título e descrição:

import java.net.URL;
import java.text.SimpleDateFormat;
import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

public class LeitorRSS {

private URL feedSource; //URL do feed
private SyndFeedInput input ; //leitor do XML recebido na url.
private SyndFeed feed ; //contém métodos para manipulação dos elementos RSS
private SimpleDateFormat formater = new SimpleDateFormat("dd/MM/yyyy");

//Neste método todo o Feed é lido, para manipulação em memória.
public LeitorRSS (String url) {
try {
feedSource = new URL(url);
input = new SyndFeedInput();
feed = input.build(new XmlReader(feedSource));
} catch (Exception e) {
e.printStackTrace();
}
}

//neste método os elementos contidos do Feed são impressos, o ROME já possui getters e setters para seus elementos.
public void imprimir() {
SyndEntryImpl item =null;
for (Object entry : feed.getEntries()){
item = (SyndEntryImpl)entry;
System.out.println( formater.format( item.getPublishedDate() ));
System.out.println(item.getTitle());
System.out.println(item.getDescription().getValue().replaceAll("<[^<>]+>", "").trim()); //retira tags HTML do campo descrição.
}
}

public static void main(String [] args){
LeitorRSS leitor = new LeitorRSS("http://www.theserverside.com/rss/theserverside-rss2.xml");
leitor.imprimir();
}
}
O ROME torna muito fácil a manipulação desses tipos de conteúdo, proporcionando multiplos usos de suas funcionalidades.

Abraços.

Fonte:

https://rome.dev.java.net/

Nenhum comentário: