2016-03-17 20 views
0

我有一個xml URL,我想解析一行。但我的腳本甚至不能讀取XML網址。我查看了PHP parsing XML from URL給出的答案,但仍然在file_get_contents()命令中出現了3個錯誤。其他網站沒有錯誤。在php中解析XML URL中的單行

我的腳本是:

<?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中打印一行?

在此先感謝!

回答

1

也許PHP有一個SSL連接的問題(我有PHP 7,一切工作正常)。

一方面,你可以嘗試請求的URL沒有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);  
?> 

或者你也可以使用捲曲的連接(者優先法):

$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]; 
+0

感謝您的回覆。我嘗試了兩個。當我使用你的第一個選項時,會出現這樣的迴應:SimpleXMLElement Object()。第二個答案是給我一個空白頁。難道我做錯了什麼?我使用Xptpp apache運行的Aptana。我對PHP完全陌生。 – user30058

+0

是的,第一個輸出是正確的,請使用我答案中的最後一個代碼來獲得該行。 ('$ coord = $ xm ....') –

+0

是的!這很有用,非常感謝。你能解釋一下爲什麼一個prin $ xml不會顯示整個xml,而只是一個帶有SimpleXMLElement Object()的空白頁面? – user30058