我正在尝试将我的地理编码后期和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);