我有一个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中只打印一行?
提前感谢!
发布于 2016-03-17 20:51:13
也许PHP的SSL连接有问题(我用的是PHP7,一切正常)。
一方面,您可以尝试在没有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];https://stackoverflow.com/questions/36060658
复制相似问题