Разбирайте XML-файл с URL-адреса, используя php

Я хочу проанализировать XML-файл с другого сервера.

<?php $xml = simplexml_load_file('http://example_page.com/api/test.xml'); ?> 

И этот код работает, только если этот файл находится на том же сервере, что и на странице, но у меня есть xml-файл на другом сервере.

Предупреждение с веб-страницы:

 Warning: simplexml_load_file(http://example_page.ugu.pl/api/test.xml) [function.simplexml-load-file]: failed to open stream: Connection refused in /virtual/z/y/example_page.ugu.pl/index.php on line 14 Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://example_page.com/api/test.xml" in /virtual/z/y/example_page.ugu.ugu.pl/index.php on line 14 

PS allow_url_fopen все еще включен.

Похоже, что есть проблема с перенаправлением в URL- simplexml_load_file() вы обращаетесь, и, скорее всего, simplexml_load_file() не выполняет перенаправления …

Таким образом, решение было бы использовать file_get_contents() или cUrl

Поскольку file_get_contents() проще, я показываю, что только …

Код должен был бы выглядеть примерно так:

 <?php $xml = simplexml_load_string(file_get_contents('http://example_page.ugu.pl/api/test.xml')); ?> 

Больше:

 <?php $xml = simplexml_load_string(file_get_contents('http://jakdojade.pl/pages/api/outputs/schedules.xml')); ?> 

Это тоже работает!

Вы должны использовать CURL (если активен).

 $url = "http://www.you-web-here.com/"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $xmlString = curl_exec($curl); 

Документация по PHP:

 Note: Libxml 2 unescapes the URI, so if you want to pass eg b&c as the URI parameter a, you have to call simplexml_load_file(rawurlencode('http://example.com/?a=' . urlencode('b&c'))). Since PHP 5.1.0 you don't need to do this because PHP will do it for you. 

Так. какую версию вы используете?

Или вы можете попробовать вот так:

 $xml_content = file_get_content('http://example_page.com/api/test.xml'); xml = simplexml_load_string($xml_content);