I have a xml URL where I want to parse a single line. But my script cant even read the XML url. I looked at the answer given at PHP parsing XML from URL but I still get 3 errors at the file_get_contents() command. There is no error with some other sites.
my script is:
<?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);
?>
I try to print the whole XML in this case, but eventually i want it to only print line 5 of the xml, the coordinates. How can I overcome the errors, and how can I make sure it only prints one line in this XML?
Thanks in advance!
Maybe PHP has a problem with the SSL connection (I have PHP 7 and everything works fine).
On one hand you can try to request the URL without SSL:
<?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);
?>
Or you can use cURL for the connection (prefered method):
$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 );
And if you have the XML string, you can get the coordinates this way:
$xml = simplexml_load_string($data);
$coord = $xml->xpath('/xls:GeocodeResponse/xls:GeocodeResponseList/xls:GeocodedAddress/gml:Point/gml:pos');
echo $coord[0][0];