[PHP-users 34621] 名前空間付XMLの展開について

hetzer @ 1mile.jp hetzer @ 1mile.jp
2009年 6月 20日 (土) 04:37:52 JST


はじめまして上坂と申します。
表題の件についてご存知の方がおられましたらお力添え頂けますでしょうか。

DMOZのstructure.rdf.u8をSimpleXML関数(PHP5)で展開する事を試みています。
本物のデータは長いのでテスト用に切り詰めたデータを使用した所、名前空間で指定
した部分が取得できません。

XML部分
<?xml version='1.0' encoding='UTF-8' ?>
<RDF xmlns:r="http://www.w3.org/TR/RDF/"
     xmlns:d="http://purl.org/dc/elements/1.0/"
     xmlns="http://dmoz.org/rdf">

<!-- Generated at 2009-06-01 14:19:20 GMT on core-n01 -->

<Topic r:id="Top">
  <catid>1</catid>
  <d:Title>Title1</d:Title>
  <d:Description>Description1</d:Description>
  <lastUpdate>2009-05-25 08:40:11</lastUpdate>
</Topic>

<Topic r:id="Top2">
<catid>2</catid>
  <d:Title>Title2</d:Title>
  <d:Description>Description2</d:Description>
  <lastUpdate>2009-15-25 08:40:11</lastUpdate>
</Topic>
</RDF>

PHPスクリプト

<?php

        $XML = simplexml_load_file("test.rdf");

        foreach ($XML->Topic as $Topic) {
                echo "$Topic->catid"."\n";
                $node = $Topic->children('http://purl.org/dc/elements/1.0/');
                echo "$node->Title"."\n";
                echo "$node->Description"."\n";
                $nodeR = $Topic->children('http://www.w3.org/TR/RDF/');
                echo "$nodeR[id]"."\n";
        }
?>

意図としては
$nodeR = $Topic->children('http://www.w3.org/TR/RDF/');
echo "$nodeR[id]"."\n";
の部分でid="XXX"のXXX部分を取得したいのですが期待通りの動作になりません。

PHPよりもXMLの理解の問題なのかもしれませんが、よろしくお願いします。



PHP-users メーリングリストの案内