2008年12月17日 00:35
パーマリンク | http://www.kantenna.com/cgi-bin/mt/mt-tb.cgi/421
php5になるとXMLが簡単に扱えるようsimpleXMLが利用できるようなので 動作テスト。
まずはSimpleXMLElementのインスタンスを作成。 ファイルを読み込む場合は第三引数にtrueを指定する。
使うXMLはこのサイトのサイトマップ
$xml = "/sample/xml/sitemap/sitemap.xml"; $sitemap = new SimpleXMLElement($xml, null, true);
この場合ルートノードであるdirectoriesが参照されている
echo $sitemap->getName() . "<br />";
directoriesの子要素であるrootにアクセスするには
echo $sitemap->root[0]->getName() . "<br />"; echo $sitemap->children()->getName() . "<br />";
となる。下記のようにするとわかりやすい。 children()の返り値は配列のような感じになるので
$second = $sitemap->children(); echo $second[0]->getName() . "<br />"; echo $second[0]["name"] . "<br />"; echo $second[0]["k"] . "<br />"; echo $second[0]["d"] . "<br />";
となる。複数の要素を持つ場合は下記のようにできる。 rootしかなくつまらないのでrootの子要素で試す。
$third = $second->children();
foreach ($third as $child) {
echo "[" . $child->getName() . "]<br />";
echo $child["name"] . "<br />";
echo $child["d""] . "<br />";
}
属性の名前が不明な場合、attributes()を利用する。
foreach ($sitemap->children() as $child) {
echo "[" . $child->getName() . "]<br />";
$attributes = $child->attributes();
foreach ($attributes as $name => $value) {
echo $name . " : " . $value . "<br />";
}
}
/ 金額 : ¥ 2,940
1-5
6-10