| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.feed.consuming-rss">
- <title>Einen RSS Feed konsumieren</title>
- <para>
- Einen <acronym>RSS</acronym> Feed zu lesen, ist so einfach wie das Instanziieren eines
- <classname>Zend_Feed_Rss</classname> Objekts mit der <acronym>URL</acronym> eines Feeds:
- </para>
- <programlisting language="php"><![CDATA[
- $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
- ]]></programlisting>
- <para>
- Wenn beim Abrufen des Feeds Fehler auftreten, wird eine
- <classname>Zend_Feed_Exception</classname> geworfen.
- </para>
- <para>
- Sobald du ein Feed Objekt hast, kannst du auf jeden Channel-Eigenschaften eines Standard
- <acronym>RSS</acronym> Feeds direkt über das Objekt zugreifen:
- </para>
- <programlisting language="php"><![CDATA[
- echo $channel->title();
- ]]></programlisting>
- <para>
- Beachte die Syntax der Funktion. <classname>Zend_Feed</classname> verwendet die Konvention,
- die Eigenschaften als <acronym>XML</acronym> Objekt zu behandeln, wenn sie durch die
- "Getter" Syntax für Variablen (<command>$obj->property</command>) angefordert werden, und
- als String zu behandeln, wenn sie durch die Methodensyntax
- (<command>$obj->property()</command>) 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.
- </para>
- <para>
- Wenn Channel-Eigenschaften Attribute beinhalten, sind diese durch die <acronym>PHP</acronym>
- Array Syntax ansprechbar:
- </para>
- <programlisting language="php"><![CDATA[
- echo $channel->category['domain'];
- ]]></programlisting>
- <para>
- Da <acronym>XML</acronym> Attribute keine Kindelemente haben können, ist die Methodensyntax
- für den Zugriff auf Attributwerte nicht notwendig.
- </para>
- <para>
- Meistens möchtest Du einen Feed durchlaufen und etwas mit seinen Einträgen machen.
- <classname>Zend_Feed_Abstract</classname> implementiert das <classname>Iterator</classname>
- Interface von <acronym>PHP</acronym>, so dass die Ausgabe aller Artikelüberschriften eines
- Channels nur dies erfordert:
- </para>
- <programlisting language="php"><![CDATA[
- foreach ($channel as $item) {
- echo $item->title() . "\n";
- }
- ]]></programlisting>
- <para>
- Wenn du mit <acronym>RSS</acronym> nicht vertraut bist, kommt hier eine Übersicht über die
- Standardelemente, die du in einem <acronym>RSS</acronym> Channel und in einzelnen
- <acronym>RSS</acronym> Elementen (Einträgen) als verfügbar erwarten kannst.
- </para>
- <para>
- Erforderliche Elemente eines Channels:
- </para>
- <itemizedlist>
- <listitem>
- <para><property>title</property> - Der Name des Channels</para>
- </listitem>
- <listitem>
- <para>
- <property>link</property> - Die <acronym>URL</acronym> einer Website, die dem
- Channel entspricht
- </para>
- </listitem>
- <listitem>
- <para>
- <property>description</property> - Ein oder mehr Sätze, die den Channel
- beschreiben
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Allgemeine optionale Elemente eines Channels:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>pubDate</property> - Das Erscheinungsdatum dieses Informationssatzes,
- im <acronym>RFC</acronym> 822 Datumsformat
- </para>
- </listitem>
- <listitem>
- <para>
- <property>language</property> - Die Sprache, in der dieser Channel verfasst ist
- </para>
- </listitem>
- <listitem>
- <para>
- <property>category</property> - Eine oder mehrere Kategorien (durch mehrfache
- Tags spezifiziert), zu denen der Channel gehört
- </para>
- </listitem>
- </itemizedlist>
- <para>
- <acronym>RSS</acronym> <emphasis><item></emphasis> Elemente haben keine strikt
- erforderlichen Elemente. Dennoch müssen entweder <property>title</property> oder
- <property>description</property> vorhanden sein.
- </para>
- <para>
- Allgemeine Elements eines Eintrags:
- </para>
- <itemizedlist>
- <listitem>
- <para><property>title</property> - Die Überschrift des Eintrags</para>
- </listitem>
- <listitem>
- <para><property>link</property> - Die <acronym>URL</acronym> des Eintrags</para>
- </listitem>
- <listitem>
- <para><property>description</property> - Eine Zusammenfassung des Eintrags</para>
- </listitem>
- <listitem>
- <para><property>author</property> - Die E-Mail Adresse des Autoren</para>
- </listitem>
- <listitem>
- <para>
- <property>category</property> - Eine oder mehrere Kategorien, zu denen der
- Eintrag gehört
- </para>
- </listitem>
- <listitem>
- <para>
- <property>comments</property> - <acronym>URL</acronym> der Kommentare zu diesem
- Eintrag
- </para>
- </listitem>
- <listitem>
- <para>
- <property>pubDate</property> - Das Datum, an dem der Eintrag veröffentlicht
- wurde, im <acronym>RFC</acronym> 822 Datumsformat
- </para>
- </listitem>
- </itemizedlist>
- <para>
- In deinem Code kannst du hiermit immer überprüfen, ob ein Element nicht leer ist:
- </para>
- <programlisting language="php"><![CDATA[
- if ($item->propname()) {
- // ... fahre fort.
- }
- ]]></programlisting>
- <para>
- Wenn du stattdessen <command>$item->propname</command> verwendest, wirst du immer ein leeres
- Objekt erhalten, das mit <constant>TRUE</constant> evaluiert, so dass deine Prüfung
- fehlschlagen würde.
- </para>
- <para>
- Für weitere Informationen ist die offizielle <acronym>RSS</acronym> 2.0 Specification hier
- verfügbar: <ulink
- url="http://blogs.law.harvard.edu/tech/rss">http://blogs.law.harvard.edu/tech/rss</ulink>
- </para>
- </sect1>
|