我正在尝试从Yahoo访问我的网站的天气预报。 使用下面的代码我能够打印xml。 我现在真正想要实现的是将温度和图像放在两个不同的变量中
$zipCode = "44418";
$url = "http://weather.yahooapis.com/forecastrss";
$zip = "?w=$zipCode";
$fullUrl = $url . $zip.'&u=c';
$curlObject = curl_init();
curl_setopt($curlObject,CURLOPT_URL,$fullUrl);
curl_setopt($curlObject,CURLOPT_HEADER,false);
curl_setopt($curlObject,CURLOPT_RETURNTRANSFER,true);
$returnYahooWeather = curl_exec($curlObject);
curl_close($curlObject);
print "yahooWeather". $returnYahooWeather;
//$temperature
//$image
答案 0 :(得分:3)
您应该继续使用simplexml或DOM来解析XML,然后您可以迭代结果。使用SimpleXML,它看起来像这样:
$zipCode = "44418";
$url = "http://weather.yahooapis.com/forecastrss";
$zip = "?w=$zipCode";
$fullUrl = $url . $zip.'&u=c';
$curlObject = curl_init();
curl_setopt($curlObject,CURLOPT_URL,$fullUrl);
curl_setopt($curlObject,CURLOPT_HEADER,false);
curl_setopt($curlObject,CURLOPT_RETURNTRANSFER,true);
$returnYahooWeather = curl_exec($curlObject);
curl_close($curlObject);
//print "here". $returnYahooWeather;
$xmlobj=simplexml_load_string($returnYahooWeather);
$res = $xmlobj->xpath("//yweather:condition");
$tmp = false;
while(list( , $node) = each($res)) {
$tmp = $node;
}
$attribs = $tmp->attributes();
print "Temperature [".$attribs['temp']."]";
答案 1 :(得分:2)
我发现使用PHP SimpleXML最简单。
$xml = simplexml_load_string($returnYahooWeather);
echo $xml->Path->To->Temperature;
这很容易,你可以使用XPath和SimpleXML :)。还有其他解析XML的方法,如前面提到的DOMDocument就是其中之一。