« AHAH: Asychronous HTML and HTTP | メイン | Ningのデベロッパーアカウント »

PHP5でXMLのパース

仕事でデータ量の多いXMLファイルをCSVに変換する必要があったのでちょっと調べて作ってみた。
動作環境はPHP 5.0.4 OSX10.4です。

<?php
$str= <<<DATA
<?xml version="1.0"?>
<root>
	<parentnode ID="1" NAME="大カテゴリ">
		<node ID="1" NAME="中カテゴリ">
			<node ID="1" NAME="小カテゴリ">
				<hoge ID="2" NAME="さとう"/>
				<hoge ID="3" NAME="sakana"/>
				<hoge ID="4" NAME="sato"/>
				<hoge ID="5" NAME="skn"/>
			</node>
		</node>
	</parentnode>
</root>
DATA;
// ↓これがみそ。
$root = simplexml_load_string($str);
foreach($root->parentnode[0]->node as $node){
    foreach($node->node as $subnode){
        foreach($subnode->hoge as $hoge){ 
            echo $root->parentnode[0]['NAME']
            .",".$node['ID']
            .",".$node['NAME']
            .",".$subnode['NAME']
            .",".$hoge['ID']
            .",".$hoge['NAME']."\n";
        }
    }
}
?>
出力結果:
大カテゴリ,1,中カテゴリ,小カテゴリ,2,さとう
大カテゴリ,1,中カテゴリ,小カテゴリ,3,sakana
大カテゴリ,1,中カテゴリ,小カテゴリ,4,sato
大カテゴリ,1,中カテゴリ,小カテゴリ,5,skn

たったこれだけでXMLをパースできるとは。
うーむ。素晴らしい。
今日からPHP5推進派になりました。

トラックバック

このエントリーのトラックバックURL:
http://www.minfish.jp/blog/mt-tb.cgi/70