Really Simple Sindication (RSS) es un excelente standard para distribuir noticias en tu website. Hoy en dia cualquiera tiene RSS desde Clarin.com hasta YO :D.

Buscando encontre una API oficial de SUN para generar 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 y Atom 1.0.

En este articulo vamos a ver como generar un output RSS utilizando ROME.

Para empezar hay que bajarse la API ROME desde aca y ademas hay que bajar JDOM el cual es una API de DOM exclusiva para Java desde aca.

Una vez que tenemos el jar rome-1.0RC1.jar y jdom.jar en nuestro CLASSPATH podemos empezar a codificar una sencilla clase RSSWriter.

import com.sun.syndication.feed.synd.SyndContentImpl;
import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndFeedImpl;
import com.sun.syndication.io.SyndFeedOutput;

public class RSSWriter {

SyndFeed feed = new SyndFeedImpl();
	
public RSSWriter() {
	this.feed.setFeedType("rss_2.0"); // si es que queremos este formato
}

public void setTitle(String title) {
	this.feed.setTitle(title);
}

public void setType(String type) {
	this.feed.setFeedType(type);
}

public void setLink(String link) {
	this.feed.setLink(link);
}

public void setDescription(String description) {
	this.feed.setDescription(description);
}

public void addEntry(String title, String link, Date date, String text) {
	SyndEntryImpl entry = new SyndEntryImpl();
	entry.setTitle(title);
	entry.setLink(link);
	entry.setPublishedDate(date);
	SyndContentImpl description = new SyndContentImpl();
	description.setType("text/plain");
	description.setValue(text);
	entry.setDescription(description);
	List entries = this.feed.getEntries();
	if (entries == null) {
		entries = new ArrayList();
		this.feed.setEntries(entries);
	}
	entries.add(entry);
}
	
public void serialize(Writer writer) throws Exception {
	SyndFeedOutput output = new SyndFeedOutput();
	output.output(this.feed, writer);
}

public void serialize(File file) throws Exception {
	SyndFeedOutput output = new SyndFeedOutput();
	output.output(this.feed, file);
}
	
public String serialize() throws Exception {
	SyndFeedOutput output = new SyndFeedOutput();
	return output.outputString(this.feed);
}

}

Y mas que facil el utilizarla.

RSSWriter writer = new RSSWriter();
writer.setTitle("Algun titulito");
writer.setDescription("Mis ultimas noticias");
writer.setLink("http://www.rodrigoasensio.com");
writer.addEntry("Nuevo post!", "http://rodrigoasensio.com/permalink/xx", 
new Date(), "Este es el texto de contenido que puede ser HTML");
writer.serialize(new FileOutputStream("/usr/share/tomcat/webapps/ROOT/feed.xml"));

El delivery de noticias con este estandard tan sencillo revoluciono la manera de obtener informacion con los readers y demas. Lo que mostre aca es solo una pequenia parte de toda la API. Rome ademas tiene subprojects entre los cuales figuran ROME Fetcher que provee cache feed-fetcher, ROME Propono que provee Atom protocol y MetaWeblog API.

Categories: General

Rodrigo Asensio

Apasionado por la tecnología

Leave a Reply

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