我有一个xml网址,我要解析一行。但我的脚本甚至无法读取XML网址。我查看了PHP parsing XML from URL给出的答案,但我仍然在file_get_contents()命令中得到3个错误。其他一些网站没有错误。
我的脚本是:
<?php
header('Content-type: text/html; charset=utf-8');
$url = "https://geodata.nationaalgeoregister.nl/geocoder/Geocoder?zoekterm=1056SW+11";
$data = file_get_contents($url);
$data = iconv(mb_detect_encoding($data, mb_detect_order(), true), "UTF-8", $data);
$xml = simplexml_load_string($data);
print_r($xml);
?>
我尝试在这种情况下打印整个XML,但最终我希望它只打印xml的第5行,即坐标。如何克服错误,如何确保它只在此XML中打印一行?
提前致谢!
答案 0 :(得分:1)
也许PHP有SSL连接问题(我有PHP 7,一切正常)。
一方面,您可以尝试在没有SSL的情况下请求URL:
<?php
header('Content-type: text/html; charset=utf-8');
$url = "http://geodata.nationaalgeoregister.nl/geocoder/Geocoder?zoekterm=1056SW+11";
$data = file_get_contents($url);
$data = iconv(mb_detect_encoding($data, mb_detect_order(), true), "UTF-8", $data);
$xml = simplexml_load_string($data);
print_r($xml);
?>
或者您可以使用cURL进行连接(首选方法):
$url = "https://geodata.nationaalgeoregister.nl/geocoder/Geocoder?zoekterm=1056SW+11";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_TIMEOUT, 10);
$data = curl_exec($c);
curl_close($c);
print_r( $data );
如果你有XML字符串,你可以这样得到坐标:
$xml = simplexml_load_string($data);
$coord = $xml->xpath('/xls:GeocodeResponse/xls:GeocodeResponseList/xls:GeocodedAddress/gml:Point/gml:pos');
echo $coord[0][0];