Início > JAVA > Lendo uma fonte RSS com Java

Lendo uma fonte RSS com Java

Escrevi um simples programa em Java que recebe uma fonte RSS via internet, o lê e imprime na tela seu conteúdo.

Para isso utilizo a biblioteca Rome, que traz inúmeros recursos para a manipulação de Feeds.

Para a implementação da classe, você vai precisar baixar algumas bibliotecas citadas como comentário no corpo da classe e colocar em seu classpath.

Eis a classe:



01     package program;
02 
03     import java.io.IOException;
04     import java.io.InputStream;
05     import java.io.InputStreamReader;
06     import java.net.MalformedURLException;
07     import java.net.URL;
08     import java.nio.charset.Charset;
09     import java.util.Iterator;
10 
11     import com.sun.syndication.feed.synd.SyndContent;
12     import com.sun.syndication.feed.synd.SyndEntry;
13     import com.sun.syndication.feed.synd.SyndFeed;
14     import com.sun.syndication.io.FeedException;
15     import com.sun.syndication.io.SyndFeedInput;
16     /**
17     * Le e imprime uma fonte RSS/Atom. Baseado no exemplo original do Rome
18     @author Juliano Martins
19     * <a href=”https://jmmwrite.wordpress.com”>Blog pessoal</a>
20     * Para fazer funcionar, você precisará das seguintes bibliotecas:  rome, romefetcher and jdom
21     http://wiki.java.net/bin/view/Javawsxml/Rome
22     http://wiki.java.net/bin/view/Javawsxml/RomeFetcherRelease1_0
23     http://www.jdom.org/
24     */
25     public class Acaraje {
26 
27     public static void main(String[] argsthrows MalformedURLException, IOException, IllegalArgumentException, FeedException {
28     String urlstring = “http://jmmwrite.wordpress.com/feed/”; //este é o rss do meu blog
29     InputStream is = new URL(urlstring).openConnection().getInputStream();
30     SyndFeedInput input = new SyndFeedInput();
31     SyndFeed feed = (SyndFeed)input.build(
32     new InputStreamReader(is, Charset.forName(“UTF-8)));
33 
34     Iterator entries = feed.getEntries().iterator();
35     while (entries.hasNext()) {
36     SyndEntry entry = (SyndEntry)entries.next();
37     System.out.println(“————-”);
38     System.out.println(“Title: ” + entry.getTitle());
39     System.out.println(“Published: ” + entry.getPublishedDate());
40     if (entry.getDescription() != null) {
41     System.out.println(“Description: “
42     + entry.getDescription().getValue());
43     }
44     if (entry.getContents().size() 0) {
45     SyndContent content = (SyndContent)entry.getContents().get(0);
46     System.out.println(“Content type=” + content.getType());
47     System.out.println(“Content value=” + content.getValue());
48     }
49     }
50 
51     }
52 
53     }

Fique atento ao seu codeset, dependendo do que utilizar, talvez terá que mudar essa linha:



1 SyndFeed feed = (SyndFeed)input.build(
2 new InputStreamReader(is, Charset.forName("<strong>ISO-8859-1</strong>")));

Obviamente por se trazer de um exemplo simples, esta classe pode ser muiiiiiiiiiiiito melhorada! Ficarei feliz em receber críticas/sugestões.

Enjoy!

Categorias:JAVA Tags:, , ,
  1. Rafael
    abril 23, 2010 às 10:07 am

    ola!! na pagina do jdom http://www.jdom.org/, o que eu devo baixar???
    o arquivo jdom-1.1.1.zip não tem nenhum jar dentro pra eu adicionar no meu classpath,….

    vlws

  2. juliano martins
    abril 23, 2010 às 12:14 pm

    eh esse zip mesmo. dentro dele procure jdom.jar

  3. Rafael
    abril 23, 2010 às 4:34 pm

    humm achei!! estava la msm!! vlwsss

  4. Rafael
    abril 23, 2010 às 4:34 pm

    deu certo seu codigo aqui!! vlws pelo exemplo!!

  5. setembro 22, 2010 às 1:03 pm

    Descompacte, sete a variavel JAVA_HOME e execute o build que ele gera o .jar

  6. Denis
    novembro 21, 2012 às 5:36 pm

    Valeu o Post, ajudou muito!

  7. Cezar
    junho 5, 2013 às 4:56 pm

    Opa blz Juliano,
    Eu utilizei seu exemplo para ler os feeds porem ele so tras as postagens mais recentes…. como eu recupero as postagens antigas?

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: