http://q.hatena.ne.jp/1295792635
ここでも出てますが未解決?!
http://oshiete.goo.ne.jp/qa/6196790.html
ver2009でXML構造hotelBasicInfoが加わったらしいのですが、
このhotelBasicInfoを加えても駄目でした。
<?php
$file = 'http://api.rakuten.co.jp/rws/3.0/rest?developerId=[私のID]&operation=SimpleHotelSearch&version=2009-10-20&largeClassCode=japan&middleClassCode=akita&smallClassCode=tazawa' ;
$data = file_get_contents($file);
$data= str_replace('header:Header', 'Header', $data);
$data = str_replace('simpleHotelSearch:SimpleHotelSearch',
'simpleHotelSearch', $data);
$xml = simplexml_load_string($data);
var_dump($xmls); →Nullになる。
foreach($xmls as $hotel){
$hotelName = $hotel->hotelBasicInfo->hotelName;foreach($xml->Body->simpleHotelSearch->hotel as $hotel){
$hotelName = $hotel->hotelBasicInfo->hotelName;
$hotelSpecial = $hotel->hotelBasicInfo->hotelSpecial;
$address1 = $hotel->hotelBasicInfo->address1;
echoなどで表示
}
?>
Warning: Invalid argument supplied for foreach()
こんなエラーでForeachもまわりません。
以下の部分で大文字小文字を間違えている為に置換されていないのが原因のようです。
str_replace('simpleHotelSearch:SimpleHotelSearch', 'simpleHotelSearch', $data);
ブラウザでアクセスしてXMLのソースを確認してみてください。
http://api.rakuten.co.jp/rws/3.0/rest?developerId=[デベロッパーID]&operation=SimpleHotelSearch&version=2009-10-20&largeClassCode=japan&middleClassCode=akita&smallClassCode=tazawa
$file = 'http://api.rakuten.co.jp/rws/3.0/rest?developerId=[デベロッパーID]&operation=SimpleHotelSearch&version=2009-10-20&largeClassCode=japan&middleClassCode=akita&smallClassCode=tazawa'; $data = file_get_contents($file); $data= str_replace('header:Header', 'Header', $data); $data = str_replace('SimpleHotelSearch:SimpleHotelSearch', 'simpleHotelSearch', $data); $xml = simplexml_load_string($data); echo "<pre>\n"; var_dump($xml); echo "</pre>\n"; foreach($xml->Body->simpleHotelSearch->hotel as $hotel){ $hotelName = $hotel->hotelBasicInfo->hotelName; $hotelSpecial = $hotel->hotelBasicInfo->hotelSpecial; $address1 = $hotel->hotelBasicInfo->address1; echo "ホテル名称:" . $hotelName . "<br>\n"; echo "紹介:" . $hotelSpecial . "<br>\n"; echo "住所:" . $address1 . "<br>\n"; }
以下の2行が間違っています。
(誤)
var_dump($xmls); →Nullになる。
foreach($xmls as $hotel){
(正)
var_dump($xml);
foreach($xml as $hotel){
これははてな上での書き間違えですね。
実際には、Xmlとして動かしております。
以下の部分で大文字小文字を間違えている為に置換されていないのが原因のようです。
str_replace('simpleHotelSearch:SimpleHotelSearch', 'simpleHotelSearch', $data);
ブラウザでアクセスしてXMLのソースを確認してみてください。
http://api.rakuten.co.jp/rws/3.0/rest?developerId=[デベロッパーID]&operation=SimpleHotelSearch&version=2009-10-20&largeClassCode=japan&middleClassCode=akita&smallClassCode=tazawa
$file = 'http://api.rakuten.co.jp/rws/3.0/rest?developerId=[デベロッパーID]&operation=SimpleHotelSearch&version=2009-10-20&largeClassCode=japan&middleClassCode=akita&smallClassCode=tazawa'; $data = file_get_contents($file); $data= str_replace('header:Header', 'Header', $data); $data = str_replace('SimpleHotelSearch:SimpleHotelSearch', 'simpleHotelSearch', $data); $xml = simplexml_load_string($data); echo "<pre>\n"; var_dump($xml); echo "</pre>\n"; foreach($xml->Body->simpleHotelSearch->hotel as $hotel){ $hotelName = $hotel->hotelBasicInfo->hotelName; $hotelSpecial = $hotel->hotelBasicInfo->hotelSpecial; $address1 = $hotel->hotelBasicInfo->address1; echo "ホテル名称:" . $hotelName . "<br>\n"; echo "紹介:" . $hotelSpecial . "<br>\n"; echo "住所:" . $address1 . "<br>\n"; }
おかげさまで、動くようになりました。
おっしゃるとおり、小文字と大文字のsが問題だったようです。
かなり悩んでいたので、大変参考になりました。
また、何かありましたらご指導宜しくお願いいたします。
おかげさまで、動くようになりました。
おっしゃるとおり、小文字と大文字のsが問題だったようです。
かなり悩んでいたので、大変参考になりました。
また、何かありましたらご指導宜しくお願いいたします。