ここで質問したけどうまくできません。

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もまわりません。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2011/01/27 21:35:22
  • 終了:2011/01/28 01:06:21

ベストアンサー

id:rouge_2008 No.2

rouge_2008回答回数594ベストアンサー獲得回数3512011/01/28 00:38:18

ポイント100pt

以下の部分で大文字小文字を間違えている為に置換されていないのが原因のようです。

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";
}

id:hiroponta

おかげさまで、動くようになりました。

おっしゃるとおり、小文字と大文字のsが問題だったようです。

かなり悩んでいたので、大変参考になりました。

また、何かありましたらご指導宜しくお願いいたします。

2011/01/28 01:05:34

その他の回答(1件)

id:deflation No.1

deflation回答回数1036ベストアンサー獲得回数1262011/01/27 21:42:48

ポイント15pt

以下の2行が間違っています。


(誤)

var_dump($xmls); →Nullになる。

foreach($xmls as $hotel){


(正)

var_dump($xml);

foreach($xml as $hotel){


http://q.hatena.ne.jp/

id:hiroponta

これははてな上での書き間違えですね。

実際には、Xmlとして動かしております。

2011/01/27 22:00:42
id:rouge_2008 No.2

rouge_2008回答回数594ベストアンサー獲得回数3512011/01/28 00:38:18ここでベストアンサー

ポイント100pt

以下の部分で大文字小文字を間違えている為に置換されていないのが原因のようです。

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";
}

id:hiroponta

おかげさまで、動くようになりました。

おっしゃるとおり、小文字と大文字のsが問題だったようです。

かなり悩んでいたので、大変参考になりました。

また、何かありましたらご指導宜しくお願いいたします。

2011/01/28 01:05:34

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません