2016-03-17 2 views
0

У меня есть URL-адрес xml, где я хочу разобрать одну строку. Но мой скрипт даже не читал XML-url. Я посмотрел на ответ, указанный в PHP parsing XML from URL, но я все еще получаю 3 ошибки в команде file_get_contents(). Нет ошибок с некоторыми другими сайтами.разобрать одну строку из XML-URL в php

мой сценарий:

<?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 в этом случае, но в конце концов, я хочу его только распечатать строку 5 XML, координаты. Как я могу преодолеть ошибки, и как я могу убедиться, что он печатает только одну строку в этом 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);  
?> 

Или вы можете использовать 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 string, вы можете получить координаты таким образом:

$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(). Второй ответ дает мне пустую страницу. Я делаю что-то неправильно? Я использую Aptana при запуске Xampp apache. Я совершенно не знаком с php. – user30058

+0

Да, первый вывод правильный, пожалуйста, используйте последний код в моем ответе, чтобы получить строку. ('$ coord = $ xm ....') –

+0

Да! Это работает, спасибо вам большое. Не могли бы вы только объяснить, почему prin $ xml не показывает весь xml, а только пустую страницу с SimpleXMLElement Object()? – user30058

 Смежные вопросы

  • Нет связанных вопросов^_^