如何从Yahoo YQL结果XML返回地名

时间:2014-06-16 20:02:41

标签: php xml simplexml yql

我想返回所有"名称"来自请求的Yahoo YQL结果的值,但我得到的只是一个空页:(这是我的代码到目前为止:

$input = $_GET['str'];
$yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%20='".$input."'";

$feed = file_get_contents($yql);
$xml = simplexml_load_string($feed);

echo $xml->query->results->place->name; 

如何解析并返回名称为" name"的所有XML值?

返回的XML结构示例:sample

非常感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

由于您已经获得了在yahoo yql上查询所需的值,以获取值,因为这是一个查询,它产生了许多结果。你需要循环它,因为它返回了多个结果。

考虑这个例子:( 约克作为例子。)

$input = 'york';
$yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%20='".$input."'";
$contents = file_get_contents($yql);
$xml = new SimpleXMLElement($contents);
$places = array();
foreach($xml->results->place as $key => $item) {
    $country_info = $item->country->attributes();
    $places[] = array(
        'placeTypeName' => (string) $item->placeTypeName,
        'name' => (string) $item->name,
        'country' => array(
            'code' => (string) $country_info['code'],
            'type' =>(string)  $country_info['type'],
            'woeid' => (string) $country_info['woeid'],
        ),
    );
}

print_r($places);

name的所有值都在$places内:

Sample Output