ROME – Lecture d’un flux (3/8)

July 18, 2007

Lors de la lecture d’un flux de nouvelles vous n’avez pas à vous souciez de quel parser utiliser selon le format (RSS ou Atom), la classe SyndFeedInput choisira directement le parser correspondant à la structure du flux.

Pour lire un flux il ne faut pas plus de deux lignes :

URL feedUrl = new URL ("http://wiki.mkhelif.fr/feed.php");
SyndFeedInput input = new SyndFeedInput ();
SyndFeed feed = input.build (new XmlReader (feedUrl));

La seconde ligne permet d’instancier un lecteur de flux qui créera un objet de type SyndFeed **(faisant abstraction du format du flux) à la troisième ligne. Un flux de type **XMLReader est un flux de caractères qui permet de faire abstraction de l’encodage HTTP.

Par défaut la classe SyndFeed surcharge la méthode toString ()ce qui permet d’afficher le contenu du flux dans un format standard.

System.out.println (feed);

Voici un exemple de lecteur de flux de nouvelles :

package com.mkhelif.rome.exemples;

import java.net.URL;

import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

/**
 * Lecteur de nouvelles de type RSS/Atom.
 *
 * @author Marwan KHELIF
 */

public class Lecteur {

    public static void main (String[] args) {
        if (args.length != 1) {
            printUsage ();
        } else {
            try {
                URL feedUrl = new URL (args[0]);
                SyndFeedInput input = new SyndFeedInput ();
                SyndFeed feed = input.build (new XmlReader (feedUrl));
                System.out.println (feed);
            } catch  (Exception ex) {
                ex.printStackTrace ();
            }
        }
    } // main ()

    private static void printUsage () {
        System.out.println ("Lecteur de nouvelles de type RSS/Atom.");
        System.out.println ("Usage: java Lecteur <url>");
        System.out.println ();
    } // printUsage ()
} // Lecteur
</url>