- 締切済み
xmlからphpでうまくデータを出力できない
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 ; ・・・(※) (※)の行は思いつきで書いてしまっているのですが、この状態で実行すると、「あいうえお」は取得できますが、日付が当然取得できません。質問は以下です。 (※)の部分は、どう書けばいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- x_jouet_x
- ベストアンサー率68% (162/236)
> 関数は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属性値も取得できます。
- x_jouet_x
- ベストアンサー率68% (162/236)
aaaやbbbはノードなので、 echo $aaa->bbb->ccc->ddd; のような記述で取得できると思いますが、yearは属性なので属性値を取得する関数(例: getAttribute("year"))を使用する必要があります。 いずれにせよ、回答#1の方が言われているとおりXMLを取得する際にDOMDocumentクラスやSimpleXML関数等、使用されているクラスか関数が分からないと属性値を取得する関数も明言できませんが・・・。
- hogehoge78
- ベストアンサー率80% (433/539)
XMLをPHPで取得する際に使用された関数か又はクラスはどのようなものでしょうか。 様々なライブラリがありますので、何を使っているかによって取得方法も変わってきます。
補足
>XMLをPHPで取得する際に使用された関数か又はクラスはどのようなものでしょうか。 失礼しました。xmlを取得する際の関数は、 $xml = simplexml_load_string($data); になります。よろしくお願いします。
補足
>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 ということになるのでしょうか。 よろしくお願いします。