Geocode - curl请求-转换关联数组为xml



我正在尝试将我的地理编码后期和lng数据转换为XML,以便我可以使用它:

这是我从googleapi使用的URL的一个例子:

http://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%20Parkway % 20山% 20看来,% 20 ca&传感器= false

目前为止我的代码是:

    if (!function_exists('curl_init')){
        die('Sorry cURL is not installed!');
    }
    $c = curl_init();
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_URL, $request_url);
    $contents = curl_exec($c);
    curl_close($c);
    $xml = json_decode( json_encode( simplexml_load_string( $contents ) ), TRUE );
    var_dump($xml, $contents, $c); exit();

在$xml上始终返回false,尽管内容被传回。

你不需要把json转换成xml。

Google services默认提供两种类型的输出。一个是JSON,另一个是XML。

在你提到的url中,将字母"json"替换为字母"xml",这样它就会像下面这样,它会给你xml输出。

http://maps.googleapis.com/maps/api/geocode/xml?address=1600%20Amphitheatre%20Parkway % 20山% 20看来,% 20 ca&传感器= false

在浏览器中打开上述url,您可以看到xml格式的结果。

下面是我在浏览器中直接给出上面提到的url时得到的示例输出的摘录。

<GeocodeResponse>
<status>OK</status>
<result>
<type>street_address</type>
<formatted_address>
1600 Amphitheatre Parkway, Mountain View, CA 94043, USA
</formatted_address>
<address_component>

所以,在你的代码中,你可以删除json函数,直接使用$xml = simplexml_load_string($contents)…

$xml = json_decode( json_encode( simplexml_load_string( $contents ) ), TRUE );

您正在尝试使用simplexml_load_string将JSON数据转换为XML。如果您阅读simplexml_load_string的手册,您将看到$contents应该是一个"格式良好的XML字符串"。在您的示例中,$contents是一个表示JSON数据的字符串。

如果需要XML,则应该访问Google API的这一部分。两个链接的区别:

    json
  • http://maps.googleapis.com/maps/api/geocode/
  • http://maps.googleapis.com/maps/api/geocode/ xml

使用SimpleXMLElement的例子:

$output = new SimpleXMLElement($contents);
var_dump($output);

最新更新