-3

openweathermap からの気象データの取得に失敗します。これが私のコードです:

$xml = new 
SimpleXMLElement(file_get_contents('http://api.openweathermap.org/data/2.5/weather?q=london&mode=xml'));
$country = $xml->code->country;
$city = $xml->code->city;
echo "Country: $country<br/>City: $city"; 

エコーすると、まったく何も得られません。助けていただければ幸いです。

4

2 に答える 2

3

国と都市の値への適切なパスは次のとおりです。

$country = $xml->city->country;
$city = $xml->city['name'];

URL のスペースを削除する必要がある場合もあるため、完全なコードは次のようになります。

$xml = new SimpleXMLElement(file_get_contents('http://api.openweathermap.org/data/2.5/weather?q=london&mode=xml'));
$country = $xml->city->country;
$city = $xml->city['name'];
echo "Country: $country<br/>City: $city"; 

基本的な SimpleXML の使用方法を簡単に確認したい場合があります。

于 2013-07-13T19:25:22.493 に答える
0

すべてのエラーメッセージが欠落しているか、さらに続行する前に関数の戻り値を確認していません。

警告: file_get_contents( http://api.openweathermap.org/data/2.5/weather ? q=london&mode=xml): ストリームを開くことができませんでした: HTTP 要求が失敗しました! HTTP/1.1 400 BAD_REQUEST

これは、不正なリクエストであるため、HTTP リクエストが失敗したことを意味します。URI が正しいかどうかを確認します。その場合は、サポート オプションについて API サービス プロバイダーにお問い合わせください。

致命的なエラー: メッセージ「文字列を XML として解析できませんでした」を含むキャッチされない例外「例外」

スクリプトに致命的なエラーがあります。何も出力しないだけでなく、予定の終了前に停止することさえありました。それは、すべてが常に機能しなければならないと考えているからです。代わりに、エラー メッセージも確認してください。

これは、ここの以前の質問で概説されています。

于 2013-07-14T09:26:27.377 に答える