チュートリアル: RSS フィードの作成

チュートリアル: RSS フィードの作成 -- XML_Serializer で RSS ニュースフィードを作成する方法

目的

注意 このチュートリアルは、cnb 氏によって作成され http://freedomink.org/node/62 で公開されていたものです。2005 年以降このサイトにつながらなくなってしまっているので、 Internet Archive's Wayback Machine を使って復旧させました。

ここでは、ニュースフィードの XML をほんの 5 分で作成してしまう方法を解説します。 PHP、PEAR、そして Stephan Schmidt が作成した PEAR パッケージ XML_Serializer を使用します。

ニュースフィードに最低限必要な内容は "サイト名"、 "サイトの URL" としてそのサイトの "ニュースの一覧" です。 ニュースフィードを作成するために必要なのは、 これらの情報を他のサイトが理解できる形式で表現した (ウェブ) ドキュメントを公開することです。これを実現するために、 標準的な RDF Site Summary (RSS) フォーマットを使用します。 このフォーマットは多くのサイトで用いられています。

ここでの狙いは、次のようなドキュメントを作成することです。

注意 これは "整形式の" XML ではありません。 説明用に可能な限りシンプルにした省略バージョンです。 まずは基本を理解し、それから整形式 XML の作成に進みましょう。

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF>
    <channel>
        <title>Freedom Ink</title>
        <link>http://freedomink.org/</link>
        <item>
            <item>
                <title>First Article</title>
                <link>http://freedomink.org/node/view/55</link>
                <description>Short blurb about article........</description>
            </item>
            <item>
                <title>Second Article</title>
                <link>http://freedomink.org/node/view/11</link>
                <description>This article shows you how ......</description>
            </item>
        </item>
    </channel>
</rdf:RDF>

PHP で行う

これを PHP で行う簡単な方法を説明します。

前提条件: PEAR および XML_Serializer パッケージがインストールされていること。

次のようなデフォルトオプションを、PHP ページの先頭に記述します。

<?php
require_once 'XML/Serializer.php';

$options = array(
    "indent"    => "    ",
    "linebreak" => "\n",
    "typeHints" => false,
    "addDecl"   => true,
    "encoding"  => "UTF-8",
    "tagName"   => "rdf:RDF",
    "defaultTagName" => "item"
);
?>

まずは、サイト上のニュース記事一覧を含む配列を作成しましょう。

配列 $stories を作成し、ひとつの記事を追加します。

$stories[] = array(
    'title'       => 'First Article',
    'link'        => 'http://freedomink.org/node/view/55',
    'description' => 'Short blurb about article........'
);

さらに別の記事を追加していく場合もやりかたは同じです。 ふつうは "for" や "foreach" のループ内で行うことになるでしょう。

$stories[] = array(
    'title'       => 'Second Article',
    'link'        => 'http://freedomink.org/node/view/11',
    'description' => 'This article shows you how ......'
);

最後に、チャネルの詳細を設定してそこに記事を追加します。

$data['channel'] = array(
    "title" => "Freedom Ink",
    "link"  => "http://freedomink.org/",
    $stories
);

では、PEAR の XML_Serializer パッケージで XML を作成してみましょう。

$serializer = new XML_Serializer($options);

if ($serializer->serialize($data)) {
    header('Content-type: text/xml');
    echo $serializer->getSerializedData();
}

これだけです! このコードを含むページを訪れると、 上で見たような XML を作成して返します。

XML/RSS ファイルのパース方法については、 関連する記事を参照ください。XML/RSS ドキュメントのパースに関する最も簡単な方法が説明されています。