10.4. Einen RSS Feed konsumieren
Zurück | Kapitel 10. Zend_Feed | Weiter

## 10.4. Einen RSS Feed konsumieren

Einen RSS Feed zu lesen, ist so einfach wie das Instanziieren eines `Zend_Feed_Rss` Objekts mit der URL eines Feeds:

    <?php

    $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');

    ?>

Wenn beim Abrufen des Feeds Fehler auftreten, wird eine `Zend_Feed_Exception` geworfen.

Sobald du ein Feed Objekt hast, kannst du auf jeden Channel-Eigenschaften eines Standard RSS Feeds direkt über das Objekt zugreifen:

    <?php

    echo $channel->title();

    ?>

Beachte die Syntax der Funktion. `Zend_Feed` verwendet die Konvention, die Eigenschaften als XML Objekt zu behandeln, wenn sie durch die "Getter" Syntax für Variablen (`$obj->property`) angefordert werden, und als String zu behandeln, wenn sie durch die Methodensyntax (`$obj->property()`) angefordert werden. Dies ermöglicht den Zugriff auf den kompletten Text jedes individuellen Knotens, während weiterhin der komplette Zugriff auf alle Kindelemente erlaubt ist.

Wenn Channel-Eigenschaften Attribute beinhalten, sind diese durch die PHP Array Syntax ansprechbar:

    <?php

    echo $channel->category['domain'];

    ?>

Da XML Attribute keine Kindelemente haben können, ist die Methodensyntax für den Zugriff auf Attributwerte nicht notwendig.

Meistens möchtest Du einen Feed durchlaufen und etwas mit seinen Einträgen machen. `Zend_Feed_Abstract` implementiert das `Iterator` Interface von PHP, so dass die Ausgabe aller Artikelüberschriften eines Channels nur dies erfordert:

    <?php

    foreach ($channel as $item) {
        echo $item->title() . "\n";
    }

    ?>

Wenn du mit RSS nicht vertraut bist, kommt hier eine Übersicht über die Standardelemente, die du in einem RSS Channel und in einzelnen RSS Elementen (Einträgen) als verfügbar erwarten kannst.

Erforderliche Elemente eines Channels:

- `title` - Der Name des Channels

- `link` - Die URL einer Website, die dem Channel entspricht

- `description` - Ein oder mehr Sätze, die den Channel beschreiben

Allgemeine optionale Elemente eines Channels:

- `pubDate` - Das Erscheinungsdatum dieses Informationssatzes, im RFC 822 Datumsformat

- `language` - Die Sprache, in der dieser Channel verfasst ist

- `category` - Eine oder mehrere Kategorien (durch mehrfache Tags spezifiziert), zu denen der Channel gehört

RSS `<item>` Elemente haben keine strikt erforderlichen Elemente. Dennoch müssen entweder `title` oder `description` vorhanden sein.

Allgemeine Elements eines Eintrags:

- `title` - Die Überschrift des Eintrags

- `link` - Die URL des Eintrags

- `description` - Eine Zusammenfassung des Eintrags

- `author` - Die E-Mail Adresse des Autoren

- `category` - Eine oder mehrere Kategorien, zu denen der Eintrag gehört

- `comments` - URL der Kommentare zu diesem Eintrag

- `pubDate` - Das Datum, an dem der Eintrag veröffentlicht wurde, im RFC 822 Datumsformat

In deinem Code kannst du hiermit immer überprüfen, ob ein Element nicht leer ist:

    <?php

    if ($item->propname()) {
        // ... fahre fort.
    }

    ?>

Wenn du stattdessen `$item->propname` verwendest, wirst du immer ein leeres Objekt erhalten, das mit `TRUE` evaluiert, so dass deine Prüfung fehlschlagen würde.

Für weitere Informationen ist die offizielle RSS 2.0 Specification hier verfügbar: http://blogs.law.harvard.edu/tech/rss

Zurück | Nach oben | Weiter
10.3. Feeds von Websites abrufen | Zum Anfang | 10.5. Einen Atom Feed konsumieren