人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[PHP]SimpleXML関数の質問です。
http://api.rakuten.co.jp/rws/1.9/rest?developerId=730902437fc60c8dd801404256346e92&operation=SimpleHotelSearch&version=2007-08-20&latitude=128440.51&longitude=503172.21&searchRadius=1";

上記のURLのXML内の一部を下記に抜粋しています。
------
<Body>
<simpleHotelSearch:SimpleHotelSearch>
<searchRadius>1.0</searchRadius>
<hotel>
<hotelNo>982</hotelNo>
<hotelName>八重洲富士屋ホテル</hotelName>
------
<hotelName>内の「八重洲富士屋ホテル」のデータを変数に格納し、表示したいのです。
children()メソッドも必要であることは理解できていますが、うまくいきません。
ご教授よろしくお願いします。

●質問者: nzk
●カテゴリ:コンピュータ インターネット
✍キーワード:URL XML [php] データ メソッド
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tezcello
●70ポイント

質問文のURLではエラーになってしまうので、適当につないだもので作ってみました。

ステータスでエラーが入っていますが気にしないという事で...

ひょっとしたら検索結果が複数返るかも知れないと思ったので、デタラメなホテル名を追加して、結果は配列に入れています。

$str = <<< EOL
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<header:Header xmlns:header="http://api.rakuten.co.jp/rws/rest/Header">
<Args>
<Arg key="User-Agent" value="Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)">true</Arg>
<Arg key="developerId" value="730902437fc60c8dd801404256346e92">true</Arg><Arg key="operation" value="SimpleHotelSearch">true</Arg>
<Arg key="version" value="2007-08-20">true</Arg>
<Arg key="latitude" value="128440.51">true</Arg>
<Arg key="longitude" value="503172.21">true</Arg>
<Arg key="searchRadius" value="1";">false</Arg>
</Args>
<Status>ClientError</Status>
<StatusMsg>searchRadiusパラメータが正しくありません。</StatusMsg>
</header:Header>
<Body>
<simpleHotelSearch:SimpleHotelSearch xmlns:simpleHotelSearch ="http://api.rakuten.co.jp/rws/rest/SimpleHotelSearch">
<searchRadius>1.0</searchRadius>
<hotel>
<hotelNo>982</hotelNo>
<hotelName>八重洲富士屋ホテル</hotelName>
</hotel>
<hotel>
<hotelNo>900</hotelNo>
<hotelName>900番ホテル</hotelName>
</hotel>

</simpleHotelSearch:SimpleHotelSearch>
</Body>
</Response>

EOL;

$xml = simplexml_load_string($str);

$result = $xml->xpath('//hotel/hotelName');

foreach ($result as $res){ $hotels[] = (string)$res;}

var_dump($hotels);

結果はこうでした。

array(2) { [0]=> string(27) "八重洲富士屋ホテル" [1]=> string(21) "900番ホテル" }

http://www.php.net/manual/ja/ref.simplexml.php

◎質問者からの返答

質問のURLにミスがありました。

正確に下記の通りです。

http://api.rakuten.co.jp/rws/1.9/rest?developerId=730902437fc60c...

この答えではちゃんと返りません。

確認お願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ