Odczytywanie kanału RSS jest tak proste jak utworzenie obiektu Zend_Feed_Rss
z adresem
URL kanału przekazanym do konstruktora:
$channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
Jeśli wystąpi jakiś błąd podczas obróbki danych pochodzących z kanału,
zostanie wyrzucony wyjątek Zend_Feed_Exception
.
Kiedy już masz obiekt kanału informacyjnego, możesz łatwo uzyskać dostęp do standardowych właściwości kanału RSS bezpośrednio na obiekcie:
echo $channel->title();
Zwróć uwagę na składnie funkcji. Zend_Feed
używa konwencji
traktującej właściwości jak obiekt XML gdy próbujemy uzyskać do nich dostęp
za pomocą składni "getter" ($obj->property
) i jako łańcuch
znaków gdy próbujemy uzyskać dostęp jak do metody ($obj->property()
).
To pozwala na pełny dostęp do danych tekstowych przy jednoczesnym dostępie
do wszystkich niższych składników.
Jeśli właściwości kanału mają atrybuty, są one dostępne przy użyciu składni tablic PHP:
echo $channel->category['domain'];
Since XML attributes cannot have children, method syntax is not necessary for accessing attribute values.
Najczęściej będziesz chciał przejść pętlą po danych kanału i zrobić coś
z jego wpisami. Klasa Zend_Feed_Abstract
implementuje wbudowany
w PHP interfejs Iterator
, więc wyświetlenie wszystkich tytułów
artykułów z kanału jest bardzo proste:
foreach ($channel as $item) { echo $item->title() . "\n"; }
Jeśli nie jesteś obeznany z RSS, poniżej znajdziesz opis podstawowych składników, które możesz znaleść w kanale RSS i w jego indywidualnych elementach (wpisach).
Wymagane składniki kanału:
-
title
- Nazwa kanału -
link
- Adres URL strony internetowej odpowiadającej kanałowi -
description
- Opis kanału
Opcjonalne składniki kanału:
-
pubDate
- Data publikacji zawartości, format RFC 822 format -
language
- Język kanału -
category
- Jedna lub więcej kategorii do których należy kanał
Elementy RSS <item>
nie mają wymaganych składników,
jednak albo składnik title
albo description
musi
istnieć w elemencie.
Składniki elementu kanału:
-
title
- Tytuł elementu -
link
- Adres URL elementu -
description
- Opis elementu -
author
- Adres email autora elementu -
category
- Jedna lub więcej kategorii do których należy element -
comments
- Adres URL komentarzy do tego elementu -
pubDate
- Data publikacji elementu, w formacie RFC 822
W twoim kodzie zawsze możesz sprawdzić czy element nie jest pusty za pomocą:
if ($item->propname()) { // ... kontynuuj. }
Jeśli zamiast tego użyjesz $item->propname
, zawsze dostaniesz
pusty obiekt który zostanie skonwertowany do wartości TRUE
,
więc test zawiedzie.
Więcej informacji dostępnych jest w oficjalnej specyfikacji RSS 2.0: http://blogs.law.harvard.edu/tech/rss