| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <sect1 id="zend.feed.consuming-rss">
- <title>Een RSS Feed lezen</title>
- <para>
- Een RSS feed lezen is zo eenvoudig als het instantiëren van een <code>Zend_Feed_Rss</code> object
- met het URI van de feed:
- </para>
- <programlisting role="php"><![CDATA[
- <?php
- $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
- ?>]]></programlisting>
- <para>
- Indien er fouten optreden bij het verkrijgen van de feed zal een <code>Zend_Feed_Exception</code>
- opgeworpen worden.
- </para>
- <para>
- Als je eenmaal een feed object hebt, kan je toegang verkrijgen voor eender welke van de standaard RSS
- kanaaleigenschappen op een direkte wijze:
- </para>
- <programlisting role="php"><![CDATA[
- <?php
- echo $channel->title();
- ?>]]></programlisting>
- <para>
- Merk de functiesyntax op. <code>Zend_Feed</code> gebruikt een overeenkomst om eigenschappen als
- XML objecten te behandelen indien ze werden opgevraagd met de variabele "getter" syntax
- (<code>$obj->property()</code>). Dit laat het toe de volledige tekst van eender welke individuele
- node te verkrijgen en toch volledig toegang te hebben tot alle childnodes.
- </para>
- <para>
- Indien kanaaleigenschappen attributen hebben zijn deze toegangkelijk door het gebruiken van de
- array syntax van PHP:
- </para>
- <programlisting role="php"><![CDATA[
- <?php
- echo $channel->category['domain'];
- ?>]]></programlisting>
- <para>
- Vermits XML attributen geen kinderen kunnen hebben is de functiesyntax niet nodig om toegang te krijgen
- tot attribuutwaarden.
- </para>
- <para>
- Meestal zal je door een feed willen loopen en iets met de entries willen doen.
- <code>Zend_Feed_Abstract</code> implementeert PHP's <code>Iterator</code> interface, dus het weergeven van alle titels van artikels in een kanaal is eenvoudig met:
- </para>
- <programlisting role="php"><![CDATA[
- <?php
- foreach ($channel as $item) {
- echo $item->title() . "\n";
- }
- ?>]]></programlisting>
- <para>
- Indien je niet vertrouwd bent met RSS zijn hier de standaard elementen die je kan verwachten in een
- RSS kanaal en in individuele RSS items (entries).
- </para>
- <para>
- Verplichte kanaalelementen:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para><code>title</code> - De naam van het kanaal</para>
- </listitem>
- <listitem>
- <para><code>link</code> - De URL van de overeenkomstige website</para>
- </listitem>
- <listitem>
- <para><code>description</code> - Eén of meerdere zinnen die het kanaal beschrijven</para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Gewone optionele elementen:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para><code>pubDate</code> - De publicatiedatum van deze set van inhoud, in de
- vorm van een RFC 822 datum</para>
- </listitem>
- <listitem>
- <para><code>language</code> - De taal waarin het kanaal is geschreven</para>
- </listitem>
- <listitem>
- <para><code>category</code> - Eén of meerdere (gespecifieerd door het vermenigvuldigen
- van de afbakeningen) categoriën waartoe het kanaal behoort</para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- RSS <code><item></code> elementen hebben geen strict verplichte eigenschappen. Desalnietemin moeten
- ofwèl <code>title</code> of <code>description</code> aanwezig zijn.
- </para>
- <para>
- Gewone item elementen:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para><code>title</code> - De titel van het item</para>
- </listitem>
- <listitem>
- <para><code>link</code> - De URL van het item</para>
- </listitem>
- <listitem>
- <para><code>description</code> - Een samenvatting van het item</para>
- </listitem>
- <listitem>
- <para><code>author</code> - Het e-mailadres van de auteur</para>
- </listitem>
- <listitem>
- <para><code>category</code> - Eén of meerdere categorieën waartoe het item behoort</para>
- </listitem>
- <listitem>
- <para><code>comments</code> - URL van commentaren verbonden aan dit item</para>
- </listitem>
- <listitem>
- <para><code>pubDate</code> - De datum van publicatie van het item in RFC 822 formaat</para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Je kan in jouw code altijd testen of een element leeg is of niet met:
- </para>
- <programlisting role="php"><![CDATA[
- <?php
- if ($item->propname()) {
- // ... doorgaan.
- }
- ?>]]></programlisting>
- <para>
- Indien je in de plaats daarvan <code>$item->propname</code> gebruikt, zal je altijd een leeg
- object verkrijgen dat geëvalueerd zal worden als <code>TRUE</code> en je test zal niet juist zijn.
- </para>
- <para>
- Voor verdere informatie kan je terecht op de officiële RSS 2.0 specificatie:
- <ulink url="http://blogs.law.harvard.edu/tech/rss">http://blogs.law.harvard.edu/tech/rss</ulink>
- </para>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|