トップ > ラボブログ

ラボブログ

« 携帯メールアドレスポータビリティの時代が到来? | メイン | Mushap Award 4 に二作品を応募 »

PHP 4 と PHP 5 それぞれの XML 文書パージング方法まとめ

あとで読む

ラボ神部です。


いろいろなウェブサービスの API を利用する際、毎回スキーマの異なる XML 文書から必要な箇所を抜き出すのは苦労するものです。DOM を使うにも構文が複雑ですし、PEAR の XML_RSS ライブラリのように毎回同じ書式でやればいいというわけでもありません。


(例えば、そう、こんな感じで。)

require_once("XML/RSS.php"); $rss =& new XML_RSS($rss_url);

$rss->parse();

foreach ($rss->getItems() as $item) {

//$item に対して何かの処理

}


しかし、Keith Devens .com - PHP XML Library, version 1.2b で配布されている xml.php を読み込むだけで、どんな XML スキーマの XML ドキュメントでも、とりあえずは PHP の配列に取り込むことができます。


(こんな風に)

include('xml.php');

$data = XML_unserialize($xml);


さらに、配列を XML 化することも出来ちゃうようです。

include('xml.php'); $xml = XML_serialize($data);


これはすごい!


今まで面白そうな API が公開されていても、parsing の処理の手間を考えるとちょっと手をつけにくいなと思っていたものも、気軽に試すことが出来そうですね。こういう部分の敷居がグッと下がるのはとっても助かります。ブックマークのコメント を見ると、2005年当時からあったようですが、いまいちこれで決め手という感じもないですね。


もう少し調べてみると、PHP4でxmlのパース処理をする方法はいくつかあるようですが、いずれもくせがあるようです。自分的には、xml.php 的な使い方がすごく使いやすいので、PHP4 な環境ではこれで行こうかとも思いますが。


ちなみに、PHP のバージョンが 5 以降なら、SimpleXML関数simplexml_load_string - PHPマニュアル を使うのが正しいようです。DOM風に要素を取り出す方法もあるようですがPHP5を試してみる - SimpleXML関数でRSSしてみる - Do You PHP? で紹介されているように、要素名の配列から子要素を $parent->child という形で呼び出すのが扱いやすそうですね。


$article = simplexml_load_file('test.xml');
echo $article->subject;

このあたりはもう少し研究してみたいと思います。一度身につけておけばそれでずっと使えるものでしょうから。


(追記)


外部サーバのファイルオープンを禁止していると、SimpleXML は使えないようです。地味ですがこちらも注意。


薬箱 - PHP simplexml_load_file 関数について


 



関連記事



ブックマークに追加する この記事についてTwitterでツイート

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/438

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

mixiアプリ本
4/22発売!

mixiアプリをつくろう!
OpenSocialで学ぶ
ソーシャルアプリ



(株)スパイスボックス
神部 竜二(著)

書籍情報






検索



神部竜二
ブログ執筆者の一人です。ネットの新しい話題や Web まわりのプログラミング、Web 広告について書いていきたいと思います。


About

2008年09月15日 12:25 に投稿されたエントリーのページです。

ひとつ前の投稿は「 携帯メールアドレスポータビリティの時代が到来? 」です。

次の投稿は「 Mushap Award 4 に二作品を応募 」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

SEO ブログパーツ  

+ インデックス数計測 +