<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 15103 -->
<!-- Reviewed: no -->
<sect1 id="zend.feed.introduction">
    <title>Introduction</title>

    <para>
        Le composant <classname>Zend_Feed</classname> offre des services permettant de
        traiter des flux RSS et Atom. Il permet d'accéder aux éléments d'un flux, aux attributs
        d'un flux et aux attributs des entrées d'un flux, tout cela au moyen d'une syntaxe
        intuitive. <classname>Zend_Feed</classname> prend aussi complètement en charge la
        modification de la structure des flux et des entrées, avec la même syntaxe intuitive que
        précédemment, et il sait transformer le résultat en XML. À l'avenir, la prise en charge des
        modifications pourrait aussi inclure la prise en charge du protocole de publication
        Atom.
    </para>

    <para>
        Sur le plan de la programmation, <classname>Zend_Feed</classname> est constitué d'une
        classe de base <classname>Zend_Feed</classname> et de classes de base abstraites
        <classname>Zend_Feed_Abstract</classname> et
        <classname>Zend_Feed_Entry_Abstract</classname>, permettant de représenter respectivement
        des flux et des entrées ; <classname>Zend_Feed</classname> contient aussi des
        implémentations particulières de ces classes abstraites pour les flux et entrées RSS et
        Atom ainsi qu'un assistant en coulisses qui assure le bon fonctionnement de la syntaxe
        intuitive.
    </para>

    <para>
        Dans l'exemple ci-dessous, nous illustrons une utilisation simple de
        <classname>Zend_Feed</classname>&#160;: on obtient un flux RSS et on enregistre les
        portions du flux qui nous intéressent dans un tableau PHP simple, qui pourra ensuite être
        utilisé pour afficher les données, les stocker dans une base de données etc.
    </para>

    <note>
        <title>Attention</title>
        <para>
            Beaucoup de flux RSS ont à leur disposition différentes propriétés, pour les
            canaux comme pour les éléments. La spécification RSS spécifie beaucoup de propriétés
            optionnelles et gardez donc cela à l'esprit lorsque vous écrivez du code qui manipule
            des données RSS.
        </para>
    </note>

    <example id="zend.feed.introduction.example.rss">
        <title>Manipuler des données RSS avec Zend_Feed</title>

        <programlisting role="php"><![CDATA[
// on va chercher les dernières news de Slashdot
try {
    $rssSlashdot =
Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // l'importation du flux a échoué
    echo "Une exception a été interceptée lors de l'importation "
       . "du flux : {$e->getMessage()}\n";
    exit;
}

// on initialise un tableau contenant les données du canal RSS
$canal = array(
    'titre'       => $rssSlashdot->title(),
    'lien'        => $rssSlashdot->link(),
    'description' => $rssSlashdot->description(),
    'elements'    => array()
    );

// on itère sur chaque élément du canal et
// on stocke les données qui nous intéressent
foreach ($rssSlashdot as $elem) {
    $canal['elements'][] = array(
        'titre'       => $elem->title(),
        'lien'        => $elem->link(),
        'description' => $elem->description()
        );
}
]]></programlisting>
    </example>
</sect1>
