Desenvolvimento - Java

Formato RSS e Java

A cada dia é mais comum encontrarmos sites que possuem pequenos quadrados na cor laranja, referenciando "RSS", "XML" ou "Atom". No próprio "Linha de Código", podemos observar estas figuras...

por Eric C M Oliveira



Já podem ser encontradas APIs e ferramentas desenvolvidas totalmente em Java.

A cada dia é mais comum encontrarmos sites que possuem pequenos quadrados na cor laranja, referenciando "RSS", "XML" ou "Atom". No próprio "Linha de Código", podemos observar estas figuras. Trata-se de um recurso para que se possa ter acesso ao conteúdo de diversos sites em um ponto único para tal.

O formato RSS (Really Simple Syndication), que foi criado em 1999, é um recurso desenvolvido via namespaces XML (Extensible Markup Language) que atualmente é usado para a divulgação de conteúdo web. Junto ao RSS, encontramos o RDF, sigla para Resource Description Framework, do qual trata de uma especificação normalmente também baseada em XML que tem como objetivo automatizar e ampliar recursos para a internet através de representação de informações. O RDF tem utilidade em várias aplicações, como em sistemas de busca e mecanismos de compartilhamento de informação. Além disso, há o atom, que também é um formato para divulgação de notícias.

Para se ter acesso ao conteúdo de diversos sites sem a necessidade de visitá-los é necessário o uso de leitores RSS ou agregadores, que reúnem parte desse conteúdo em uma só interface. Os arquivos RSS, também conhecidos por feeds, podem trazer um título e um link de acesso ao conteúdo completo desta. Resumindo, o agregador busca os feeds de sites escolhidos pelo usuário e os apresenta em um formato único semelhante ao dos gerenciadores de e-mail. Existem agregadores que rodam diretamente no computador do usuário, e outros que funcionam pelo navegador, de maneira semelhante aos serviços de webmail.

Não será nosso objetivo neste artigo, entrar em detalhes do formato RSS. No próprio Linha de Código, o assunto já foi muito bem abordado (ver referências).

Em se falando de Java especificamente, temos o projeto Informa, uma API Java para desenvolvimento com arquivos RSS. Este projeto é o resultado do merge entre dois serviços Java, o HotSheet e Risotto. No site do sorceforge é possível encontrar os arquivos jars necessários para se utilizar essa biblioteca.

Abaixo, por exemplo, temos um trecho de código simples, responsável pela leitura de um arquivo RSS:

try {      
  URL feed = new URL("file:/C:/meuArquivoFeed.rss");
  ChannelFormat format = FormatDetector.getFormat(feed);
  ChannelParserCollection parsers = 
                          ChannelParserCollection.getInstance();
                       
  ChannelParserIF parser = 
    parsers.getParser(format, feed);
	
  parser.setBuilder(new ChannelBuilder());
  ChannelIF channel = parser.parse();
  
  for (Iterator iter = channel.getItems().iterator(); 
                                     iter.hasNext();) {
    ItemIF item = (ItemIF)iter.next();
    System.out.println(item.getTitle());
  }
} catch (MalformedURLException mue) {
  mue.printStackTrace();
} catch (UnsupportedFormatException ufe) {
  ufe.printStackTrace();
} catch (ParseException pe) {
  pe.printStackTrace();
}

É possível também assim criar simples JavaBeans para a chamada a arquvos RSS, ou mesmo taglibs JSP.

Abaixo segue uma página JSP que faz uma requisição a um feed do Linha de Código via taglib:

<%@ taglib prefix="rss" uri="/WEB-INF/rsstaglib.tld" %>
<rss:simpleRssFeed uri="http://www.linhadecodigo.com.br/rss/artigos_geral.xml"/>

Teríamos então um Bean chamado SimpleRssFeedTag, herdada de TagSupport. Este bean seria formado pelo uri, os métodos get, set e doEndTag(), que seria o responsável pelo parser do feed rss.

Uma ótima opção para entender o funcionamento de Java com o formato RSS é a ferramenta do tipo agregadora ThinFeeder, um projeto open-source brasileiro. Além de ter uma ótima opção de ferramenta, é possível fazer o download do source da ferramenta e assim compreender um pouco mais a relação Java - Informa - RSS.

Referências:

http://informa.sourceforge.net/
http://thinfeeder.sourceforge.net/
http://www.linhadecodigo.com.br/artigos_impressao.asp?id_ac=551

Eric C M Oliveira

Eric C M Oliveira - Bacharel em Ciencia da Computação/FASP e Comunicação/Unesp, tem experiência em desenvolvimento Java nas plataformas J2SE, J2EE e J2ME, além de atividades ligadas a disciplina de testes, engenharia e qualidade de software. Tem certificações Java SCJP 1.3, SCJP 1.4, Rational Test Management, Rational Robot e RUP (Rational Unified Process).