Odczytywanie kanału RSS jest tak proste jak utworzenie obiektu Zend_Feed_Rss
z adresem
URL kanału przekazanym do konstruktora:
<?php $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:
<?php 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:
<?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:
<?php 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ą:
<?php 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