10.4. RSS フィードの使用
前のページ | 第10章 Zend_Feed | 次のページ

## 10.4. RSS フィードの使用

RSS フィードの読み込みは、フィードの URL を指定して `Zend_Feed_Rss` のインスタンスを作成するのと同じくらい簡単です。

    <?php

    $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');

    ?>

フィードの取得時にエラーが発生した場合は `Zend_Feed_Exception` がスローされます。

フィードオブジェクトを取得すると、標準的な RSS の "channel" プロパティに対して直接アクセスできるようになります。

    <?php

    echo $channel->title();

    ?>

関数の構文に注意しましょう。"getter" 方式の構文 (`$obj->property`) をした場合は、`Zend_Feed` はプロパティを XML オブジェクトとして扱います。 一方、メソッドの構文 (`$obj->property()`) を使用した場合は文字列として扱います。 これにより、特定のノードを取得したあとで、さらにその子要素にもアクセスできるようになります。

チャネルのプロパティが属性を保持している場合、PHP の配列構文を使用してそれらにアクセスすることができます。

    <?php

    echo $channel->category['domain'];

    ?>

XML の属性は子を持つことができないので、 属性値へアクセスする際にメソッド構文を使用する必要はありません。

たいていの場合は、フィードをループさせたうえで、 個々のエントリに対して何かをすることになるでしょう。 `Zend_Feed_Abstract` は PHP の `Iterator` インターフェイスを実装しているので、 例えばチャネル内の全記事のタイトルを表示するには単にこのようにするだけです。

    <?php

    foreach ($channel as $item) {
        echo $item->title() . "\n";
    }

    ?>

RSS にあまり詳しくない方のために、RSS チャネルおよび個々の RSS アイテム (エントリ) で利用できる標準的な要素をまとめます。

必須のチャネル要素

- `title` - チャネルの名前

- `link` - チャネルに対応するウェブサイトの URL

- `description` - チャネルについての説明

よく使用されるオプションのチャネル要素

- `pubDate` - コンテンツの発行日を RFC 822 の日付書式で表したもの

- `language` - チャネルで使用している言語

- `category` - チャネルの所属するカテゴリ (複数の場合は複数のタグで指定)

RSS の `<item>` 要素には必須要素はありません。 しかし `title` あるいは `description` が存在しなければなりません。

よく使用されるアイテム要素

- `title` - アイテムのタイトル

- `link` - アイテムの URL

- `description` - アイテムの概要

- `author` - 著者のメールアドレス

- `category` - アイテムが所属するカテゴリ

- `comments` - このアイテムに関連するコメントの URL

- `pubDate` - アイテムの発行日を RFC 822 の日付書式で表したもの

要素が空要素であるかどうかは、以下のようにして調べられます。

    <?php

    if ($item->propname()) {
        // ... 続行できます
    }

    ?>

`$item->propname` 形式を使用した場合は、 空のオブジェクトについても `TRUE` と評価されてしまうので、 このように調べることはできません。

詳細な情報は、 http://blogs.law.harvard.edu/tech/rss にある RSS 2.0 の公式仕様を参照ください。

前のページ | 上に戻る | 次のページ
10.3. ウェブページからのフィードの取得 | ホーム | 10.5. Atom フィードの使用