Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2004/01/13

counter hits
since 1999/11/06


DOMXMLでRSSしてみる

alertここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。

zip形式 tgz形式

先日SAX関数でRSS(RDF Site Summary)のパースをやってみましたが、「SAXとくればDOM」ということでやってみました。ただ、フツーにDOMをやったのではつまらないので、以前に作ったXMLアクセスクラスの自動生成スクリプトを使ってDOMアクセスクラスを吐かせて、それを使ってみました(ややこしい。。。)。

実際、RSS1.0では名前空間が使用されていますが、自動生成されたXMLアクセスクラスは名前空間をサポートしていません。。。が、たまたま要素名がユニークなため、自動生成されたアクセスクラスでも使えてしまいます(^-^;

ざっとですが、以下のような流れでクラスを作りました。

●test.php

<?php
require_once("phl/RDF.phl");
?>
<?php
function doIt($root)
{
    $item = $root->getItem();
    for ($i = 0; $i < count($item); $i++) {
        $title = $item[$i]->getTitle();
        $link = $item[$i]->getLink();
        printf('<li><a href="%s" title="%s">%s</a></li>', $link->getContent(),
                                                          $title->getContent(),
                                                          $title->getContent());

    }
}

    /**
     * main
     */
    unset($root);
    $root = new RDF("http://www.doyouphp.jp/home.rss");
    doIt($root);
    $root = null;

?>

●test.phpからの差分

<?php
                           :
    $root = new RDF("http://www.php.net/news.rss");
                           :
?>

この作業に約5分。。。結構いい感じで動きます(^-^)

後で試しましたが、スラッシュドットジャパンのrdf(http://slashdot.jp/slashdot.rdf)もOKでした(というか、RSS1.0なら大丈夫のハズ。。。)。

ちなみに、結果として以下のようなHTMLが出力されます(適宜改行を入れています)。

●Do You PHP?の場合
<li><a href="http://www.doyouphp.jp/inst/inst_unix_dso_4_shared.shtml"
title="拡張モジュールをshared extensionとしてインストールする">拡張モジュールをshared
extensionとしてインストールする</a></li>
<li><a href="http://www.doyouphp.jp"
title="PHP4.3.0RC4がリリース!">PHP4.3.0RC4がリリース!</a></li>
<li><a href="http://www.doyouphp.jp/aboutlink.shtml"
title="RSSを配信開始しました">RSSを配信開始しました</a></li>
<li><a href="http://www.doyouphp.jp/sample/sample_xml_sax_rss.shtml"
title="XMLパーサ(SAX)でRSSしてみる">XMLパーサ(SAX)でRSSしてみる</a></li>
<li><a href="http://www.doyouphp.jp/cgi-bin/user/eztree.cgi"
title="BBSのCGIを更新">BBSのCGIを更新</a></li>
<li><a href="http://www.doyouphp.jp/tips/tips_phpdoc.shtml"
title="PHPDocにPEAR版PHPDocの情報を追加">PHPDocにPEAR版PHPDocの情報を追加</a></li>
<li><a href="http://www.doyouphp.jp/tips/tips_ura_oci_column.shtml"
title="裏OCI関数マニュアル - Column編">裏OCI関数マニュアル - Column編</a></li>
<li><a href="http://www.doyouphp.jp/tips/tips_ura_oci_coll.shtml"
title="裏OCI関数マニュアル - Collection編">裏OCI関数マニュアル - Collection編</a></li>
<li><a href="http://www.doyouphp.jp/tips/tips_sqlinjection.shtml"
title="ダイレクトSQLコマンドインジェクションについて">ダイレクトSQLコマンドインジェクションについて</a></li>
<li><a href="http://www.doyouphp.jp/sample/sample_others_imap.shtml"
title="IMAP関数でPOP3">IMAP関数でPOP3</a></li>
<li><a href="http://www.doyouphp.jp/book/"
title="メニュー「WEB+DB PRESS」を「BOOK」に変更">メニュー「WEB+DB PRESS」を「BOOK」に変更</a></li>
<li><a href="http://www.doyouphp.jp/sample/sample_ora_cursor.shtml"
title="OCICancelって?">OCICancelって?</a></li>
<li><a href="http://www.doyouphp.jp/tips/tips_phpxref.shtml"
title="PHPXref - クロスリファレンスドキュメントの自動生成">PHPXref - クロスリファレンスドキュメントの自動生成</a></li>
<li><a href="http://www.doyouphp.jp/sample/sample_others_funclist.shtml"
title="利用可能な関数一覧の取得">利用可能な関数一覧の取得</a></li>
<li><a href="http://www.doyouphp.jp/inst/"
title="Apache・PHPのインストール手順を更新">Apache・PHPのインストール手順を更新</a></li>
  
●PHP本家の場合
<li><a href="http://qa.php.net/" title="PHP 4.3.0RC4 Released">PHP 4.3.0RC4 Released</a></li>
<li><a href="http://www.mysql.com/events/uc2003/" title="MySQL Users Conference and Expo 2003 in San Jose">
MySQL Users Conference and Expo 2003 in San Jose</a></li>
<li><a href="http://www.php.net/news.rss" title="PHP news feed available">
PHP news feed available</a></li>
<li><a href="http://www.afup.org/" title="Forum PHP 2002 in Paris, France">
Forum PHP 2002 in Paris, France</a></li>
<li><a href="http://www.phpmag.de/" title="PHP Magazine - International Edition">
PHP Magazine - International Edition</a></li>
<li><a href="http://www.phparch.com/" title="New Monthly PHP Magazine Launched">
New Monthly PHP Magazine Launched</a></li>
<li><a href="http://www.php.net/" title="PHP site server updates">
PHP site server updates</a></li>
<li><a href="http://www.php.net/urlhowto.php" title="PHP Search Bars available for major browsers">
PHP Search Bars available for major browsers</a></li>
<li><a href="http://weblabor.hu/php-doc-chm" title="10th Release of the PHP Manual CHM Edition">
10th Release of the PHP Manual CHM Edition</a></li>
<li><a href="http://www.linuxworldexpo.de" title="PHP at the LinuxWorld Expo Oct. 29-31th
in Frankfurt, Germany">PHP at the LinuxWorld Expo Oct. 29-31th in Frankfurt, Germany</a></li>
<li><a href="http://www.w3.org/TR/html401/interact/forms.html#access-keys"
title="New keyboard shortcuts">New keyboard shortcuts</a></li>
<li><a href="http://www.php.net/downloads.php" title="PHP 4.2.3 Released">
PHP 4.2.3 Released</a></li>
  


About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2004 by Hideyuki SHIMOOKA all rights reserved.