как читать xml-файл с URL-адреса, используя php

Мне нужно прочитать XML-файл из URL-адреса

$map_url = "http://maps.google.com/maps/api/directions/xml?origin=".$merchant_address_url."&destination=".$customer_address_url."&sensor=false"; 

Это дает мне URL-адрес:

http://maps.google.com/maps/api/directions/xml?origin=Quentin+Road+Brooklyn%2C+New+York%2C+11234+United+States&destination=550+Madison+Avenue+New+York% 2C + New York +% 2C + 10001 + Соединенные Штаты + & датчик = ложь

Я использую эту функцию для чтения и получения данных:

  $response_xml_data = file_get_contents($map_url); if($response_xml_data){ echo "read"; } $data = simplexml_load_string($response_xml_data); echo "<pre>"; print_r($data); exit; 

Но не повезло, никакой помощи?

Related of "как читать xml-файл с URL-адреса, используя php"

Ваш код кажется правильным, проверьте, включено ли fopen wrappers ( allow_url_fopen = On on php.ini)

Кроме того, как упоминалось в других ответах, вы должны предоставить правильно закодированный URI или закодировать его с помощью функции urlencode () . Вы также должны проверить, есть ли какая-либо ошибка, получающая XML-строку, и если есть какая-либо ошибка синтаксического анализа, которую вы можете вывести с помощью libxml_get_errors () следующим образом:

 <?php if (($response_xml_data = file_get_contents($map_url))===false){ echo "Error fetching XML\n"; } else { libxml_use_internal_errors(true); $data = simplexml_load_string($response_xml_data); if (!$data) { echo "Error loading XML\n"; foreach(libxml_get_errors() as $error) { echo "\t", $error->message; } } else { print_r($data); } } ?> 

Если проблема в том, что вы не можете получить XML-код, возможно, это связано с тем, что вам нужно включить в запрос некоторые пользовательские заголовки, проверьте, как использовать stream_context_create () для создания настраиваемого контекста потока для использования при вызове file_get_contents() на примере 4 в http://php.net/manual/en/function.file-get-contents.php

вы можете получить данные из XML с помощью функции «simplexml_load_file». См. Эту ссылку

http://php.net/manual/en/function.simplexml-load-file.php

 $url = "http://maps.google.com/maps/api/directions/xml?origin=Quentin+Road+Brooklyn%2C+New+York%2C+11234+United+States&destination=550+Madison+Avenue+New+York%2C+New+York%2C+10001+United+States&sensor=false"; $xml = simplexml_load_file($url); print_r($xml); - $url = "http://maps.google.com/maps/api/directions/xml?origin=Quentin+Road+Brooklyn%2C+New+York%2C+11234+United+States&destination=550+Madison+Avenue+New+York%2C+New+York%2C+10001+United+States&sensor=false"; $xml = simplexml_load_file($url); print_r($xml); 

file_get_contents обычно имеет проблемы с правами. Чтобы избежать их, используйте:

 function get_xml_from_url($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); $xmlstr = curl_exec($ch); curl_close($ch); return $xmlstr; } 

Пример:

 $xmlstr = get_xml_from_url('http://www.camara.gov.br/SitCamaraWS/Deputados.asmx/ObterDeputados'); $xmlobj = new SimpleXMLElement($xmlstr); $xmlobj = (array)$xmlobj;//optional 

Он работает для меня. Я думаю, вам, вероятно, нужно использовать urlencode() для каждого из компонентов $map_url .

$url = 'http://www.example.com'; $xml = simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA);

$ url может быть php-файлом, если файл генерирует данные формата XML в качестве вывода.