Odbieranie danych z kanału informacyjnego RSS

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