特集
2004/05/28 18:30 更新
UNIX USER 2004年6月号「実践! 最新PHP 5」より転載:
Part 3 PHP 5に標準バンドルされた機能 (2/3)
SimpleXML |
最近では、Webサービスの多様化によって、APIなどの実行結果にXMLが用いられるケースが増えている。ここでは、PHPで簡単にXMLを利用する機能として、PHP 5に搭載されているSimpleXMLについて解説しよう。
PHP 4に存在するXMLの問題点
皆さんは、PHP 4でXMLデータを取り扱ったことがあるだろうか。PHP 4では、XMLパーサーのハンドラを自分で実装する必要があり、パース結果をどのような形式で取得できるようにするかは、ハンドラを実装した個人の主観に左右されてしまう。つまり、PHP 4では、XMLのパース結果の形式に明確なルールが存在していないのだ。
SimpleXMLの仕組み
XMLとはエレメント(要素)の集合体である(図3)。PHP 5で導入されたSimpleXMLでは、エレメントをsimple_elementというオブジェクトで表現している。simple_elementオブジェクトは、階層構造を実現するために、子のエレメントとアトリビュート(属性)を持っている。それぞれ用意されたメソッドを使うことで、簡単に取得可能である。
RSSをパースしてみよう
RSS※データは、Webサイト上にあるコンテンツの更新状況を把握するために使用されているデータで、フォーマットはXML形式である。
国内のRSS配布サイトを紹介しているrss-jp.net(http://rss-jp.net/)をご覧になれば気付くと思うが、blogなどの個人向けサービスだけではなく、国内の主要ニュースサイトも積極的にRSSを配布している。
リスト2のサンプルスクリプトは、スラッシュドットジャパン(http://slashdot.jp/)のRSSデータを取得して最新ニュースのヘッドラインを表示している(図4)。このサンプルスクリプトは、13行目にスラッシュドットジャパンに依存している個所があるので注意してほしい。汎用的なRSSリーダーを作る場合は、このような依存性のある記述は避けるようにしよう。
リスト2 SimpleXMLによるRSSのパース |
1 <?PHP 2 // スラッシュドットジャパンの 3 // RSSを使ってxmlオブジェクトを作る 4 $xml = simplexml_load_file("http://slashdot.jp/slashdotjp.rss"); 5 6 // XMLの内容を表示する 7 foreach ($xml->item as $item) { 8 // URLを取得 9 $link = $item->link; 10 // 記事タイトルを取得 11 $title = mb_convert_encoding($item->title, mb_internal_encoding(), "auto"); 12 // コメント数を取得 13 $comments = array_shift($item->xpath("slash:comments")); 14 // 表示する 15 echo "<a href=\"{$link}\">{$title}</a>({$comments})<br>\n"; 16 } 17 ?> |
SimpleXMLは、汎用的なXMLパーサーである。RSSを使って、自分の書いた記事に関係するニュースへのリンクを自動的に作成したり、設定ファイルをXMLで記述するなど、アイデア次第でいろいろと面白い使い方が可能である。
このページで出てきた専門用語 |
RSS 「RDF Site Summary」の略。コンテンツの要約と更新情報をXMLで表したもの。現在流行しているblogにも、更新情報を配信する手段としてRSSが利用されている。 |
[照井進吾,UNIX USER]
Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.