これ何て呼びますか

WEBサービスでリクエストに対して取得したxmlの中で、下記のようなデータがあるのですが、それがうまくphpで出力できなくて困っています。
[xmlのデータ(一部)]
<aaa>
 <bbb>
  <ccc>
   <ddd>あいうえお</ddd>
   <Date date="05" month="09" year="2009">
[phpのソース]
echo $aaa->bbb->ccc->ddd ;
echo $aaa->bbb->ccc->year ; ・・・(※)

(※)の行は思いつきで書いてしまっているのですが、この状態で実行すると、「あいうえお」は取得できますが、日付が当然取得できません。質問は以下です。
(※)の部分は、どう書けばいいのでしょうか?

A 回答 (3件)

> 関数はsimplexml_load_string ということになるのでしょうか。



SimpleXMLを使用されているのですね。
であれば、ノードは $aaa->bbb->ccc->ddd で取得できますが、属性値はattributes()関数を使う必要があります。

質問で挙げられているXMLデータを例にすると、
$node = $aaa->bbb->ccc->Date; // Dateノードの取得
$attrs = $node->attributes(); // Dateノードの属性の取得
echo $attrs["year"]; // Dateノードのyear属性値の取得

上記の変数$attrsは連想配列になっているので、$attrs["date"]や$attrs["month"]でdate属性値やmonth属性値も取得できます。
    • good
    • 0

aaaやbbbはノードなので、


echo $aaa->bbb->ccc->ddd;
のような記述で取得できると思いますが、yearは属性なので属性値を取得する関数(例: getAttribute("year"))を使用する必要があります。

いずれにせよ、回答#1の方が言われているとおりXMLを取得する際にDOMDocumentクラスやSimpleXML関数等、使用されているクラスか関数が分からないと属性値を取得する関数も明言できませんが・・・。

この回答への補足

>XMLを取得する際にDOMDocumentクラスやSimpleXML関数等、使用されているクラスか関数が分からないと属性値を取得する関数も明言できませんが・・・。

失礼しました。xmlを取得する際の関数、というかソースは以下のようになっています。

$url = "http://~~~~~~";
$params = "?~~~~~
$data = file_get_contents($url . $params);
$data = str_replace(~~~,~~~, $data);
$xml = simplexml_load_string($data);

関数はsimplexml_load_string ということになるのでしょうか。
よろしくお願いします。

補足日時:2009/08/14 15:07
    • good
    • 0

XMLをPHPで取得する際に使用された関数か又はクラスはどのようなものでしょうか。


様々なライブラリがありますので、何を使っているかによって取得方法も変わってきます。

この回答への補足

>XMLをPHPで取得する際に使用された関数か又はクラスはどのようなものでしょうか。

失礼しました。xmlを取得する際の関数は、
$xml = simplexml_load_string($data);
になります。よろしくお願いします。

補足日時:2009/08/14 15:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!