2008年12月17日 00:42
パーマリンク | http://www.kantenna.com/cgi-bin/mt/mt-tb.cgi/423
simpleXMLではxPathを利用してノードにアクセスできるようなので試してみるよ。
例によって使用XMLファイルはこのサイトのサイトマップ
$xml = "/sample/xml/sitemap/sitemap.xml"; $sitemap = new SimpleXMLElement($xml, null, true);
$sitemapのノードにxPathを利用してアクセスするにはxpath(string $path)を利用する。 カレントは/directories/root/web/library/pearとする。
$pear = $sitemap->root->web->library->pear; echo $pear->getName();
pear/package/pager にアクセスする。
$pager = $pear->xpath("package/pager");
echo $pager[0]->getName() . "<br />";
echo $pager[0]["name"] . "<br />"";
echo $pager[0]["d"];
//も利用できる。package以下のfilesを取得。files数分の配列が返る。
$package_files = $pear->xpath("package//files");
var_dump(count($package_files));
foreach ($package_files as $values) {
foreach ($values->children() as $value) {
echo $value->getName() . "<br />";
echo $value["name"] . "<br />";
echo $value["d"] . "<br />"";
}
}
pear/package/validate の属性にアクセスする。
$validate_atributes = $pear->xpath("package/validate/@*");
foreach ($validate_atributes as $attribute) {
foreach ($attribute as $key => $value) {
echo $key . " : " . $value . "<br />";
}
}
pearの親要素であるlibraryにアクセスする。
$libraries = $pear->xpath("..");
echo $libraries[0]->getName() . "<br />";
echo $libraries[0]["name"] . "<br />";
echo $libraries[0]["d"];
xPathを利用して色々な要素に簡単にアクセスできますが注意点としては
とのことです。詳しくはPHP での SimpleXML 処理を参照。
/ 金額 : ¥ 2,940
1-5
6-10