ROME – Conversion d’un format à un autre (4/8)
July 19, 2007
Pour lire un flux il suffit d’utiliser la classe SyndFeedInput qui sélectionnera le parser à utiliser et qui permettra de récupérer le flux en tant que SyndFeed, format qui fait abstraction du format du flux.
SyndFeedInput input = new SyndFeedInput ();
SyndFeed feed = input.build (new XmlReader (new URL ("http://wiki.mkhelif.fr/feed.php")));
Rome permet de générer des flux de nouvelles à partir d’instances de SyndFeed grâce à la classe SyndFeedOutput. La génération d’un flux se fait en seulement deux lignes :
SyndFeedOutput output = new SyndFeedOutput ();
output.output (feed, new PrintWriter (System.out));
La première ligne créer une instance de SyndFeedOutput qui va permettre de générer le flux. Cette classe permet de générer des flux de différents types :
- rss_0.9
- rss_0.91
- rss_0.92
- rss_0.93
- rss_0.94
- rss_1.0
- rss_2.0
- atom_0.3
L’objet SyndFeed contient un paramètre feedType permettant de spécifier le type de flux. La seconde ligne génére le flux de nouvelles et l’envoi sur la sortie passée en paramètre (ici la sortie standard).
Voici un exemple d’application permettant de convertir un flux dans un autre format :
package com.mkhelif.rome.exemples;
import java.io.PrintWriter;
import java.net.URL;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.SyndFeedOutput;
import com.sun.syndication.io.XmlReader;
/**
* Convertis un flux de type RSS/Atom vers un autre type de flux RSS/Atom.
*
* @author Marwan KHELIF
*/
public class Converter {
public static void main (String[] args) {
if (args.length != 2) {
printUsage ();
} else {
try {
String outputType = args[0];
URL feedUrl = new URL (args[1]);
SyndFeedInput input = new SyndFeedInput ();
SyndFeed feed = input.build (new XmlReader (feedUrl));
feed.setFeedType (outputType);
SyndFeedOutput output = new SyndFeedOutput ();
output.output (feed,new PrintWriter (System.out));
} catch (Exception ex) {
ex.printStackTrace ();
}
}
} // main ()
private static void printUsage () {
System.out.println ("Convertis les différents types de flux RSS/Atom.");
System.out.println ("Usage: java Converter
<format> <url>");
System.out.println ("Formats valides : rss_0.9, rss_0.91, rss_0.92, rss_0.93,");
System.out.println (" rss_0.94, rss_1.0, rss_2.0, atom_0.3");
System.out.println ();
} // printUsage ()
} // Converter
</url></format>