気象 Web サービスを呼び出して応答を受け取りましたが、応答から 1 つの要素を読み取ることができませんでした。
応答は次のようになります。
<string xmlns="http://www.webserviceX.NET">
<?xml version="1.0" encoding="utf-16"?>
<CurrentWeather>
<Location>Hamburg-Finkenwerder,Germany (EDHI) 53-32N 009-50E 13M</Location>
<Time>Sep 28, 2013 - 03:35 AM EDT / 2013.09.28 0735 UTC</Time>
<Wind> Variable at 1 MPH (1 KT):0</Wind>
<Visibility> less than 1 mile:0</Visibility>
<SkyConditions> mostly cloudy</SkyConditions>
<Temperature> 44 F (7 C)</Temperature>
<DewPoint> 44 F (7 C)</DewPoint>
<RelativeHumidity> 100%</RelativeHumidity>
<Pressure> 30.03 in. Hg (1017 hPa)</Pressure>
<Status>Success</Status>
</CurrentWeather>
</string>
私のコードは次のようになります。
$url = "http://www.webservicex.com/globalweather.asmx/GetWeather?CityName=Hamburg&CountryName=Germany";
$options = array (CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "xml", // handle compressed
CURLOPT_USERAGENT => "test", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10 ); // stop after 10 redirects
$ch = curl_init ( $url );
curl_setopt_array ( $ch, $options );
$response = curl_exec ( $ch );
$err = curl_errno ( $ch );
$errmsg = curl_error ( $ch );
$header = curl_getinfo ( $ch );
$httpCode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE );
curl_close ( $ch );
$xml = json_decode(json_encode((array) simplexml_load_string($response)), 1);
print_r($xml->SkyConditions);
基本的には、SkyConditions の要素の値を読みたいと思います。
$xml->SkyConditions
と同様に "" を返します$xml[0]->SkyConditions
。
私は何を間違っていますか?