Intereting Posts
Использование внешних js с расширением .php в Codeigniter Как продолжать проверку файла до его появления, а затем предоставить ссылку на него напишите вывод print_r в txt-файле. PHP Вырезать пробелы внутри переменной в PHP Максимальное количество записей в таблице базы данных Как продолжить сеанс с одной страницы на другую с помощью PHP php / ajax REMOTE_ADDR установлен на IP-адрес фиктивного сетевого адаптера Как повернуть изображение и сохранить изображение Чтение данных календаря Apple / iCloud с использованием PHP / CalDAV В PHP есть ли короткий способ сравнить переменную с несколькими значениями? разница между mysqli_query и mysqli_real_query В PHP можно проверить содержимое Zip-файла без предварительного извлечения его содержимого? Загрузка файлов поставщика в CakePHP 2.0 нам нужно перезапустить apache + APC после развертывания новой версии приложения? PHP get_headers () альтернатива

Использование SimpleXML для загрузки удаленного URL-адреса

Я пытаюсь использовать SimpleXML для загрузки удаленного URL-адреса.

Если я введу в свой браузер следующее:

http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerUserAgent=Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.25)+Gecko/20111212+Firefox/3.6.25&customerSessionId=&xml=<HotelListRequest><arrivalDate>01/22/2012</arrivalDate><departureDate>01/24/2012</departureDate><RoomGroup><Room><numberOfAdults>1</numberOfAdults><numberOfChildren>1</numberOfChildren><childAges>4</childAges></Room></RoomGroup><city>Amsterdam</city><countryCode>NL</countryCode><supplierCacheTolerance>MED</supplierCacheTolerance></HotelListRequest> 

Оно работает!

Если я попробую;

 $url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerUserAgent=Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.25)+Gecko/20111212+Firefox/3.6.25&customerSessionId=&xml=<HotelListRequest><arrivalDate>01/22/2012</arrivalDate><departureDate>01/24/2012</departureDate><RoomGroup><Room><numberOfAdults>1</numberOfAdults><numberOfChildren>1</numberOfChildren><childAges>4</childAges></Room></RoomGroup><city>Amsterdam</city><countryCode>NL</countryCode><supplierCacheTolerance>MED</supplierCacheTolerance></HotelListRequest> '; $xml = simplexml_load_file($url); 

Я встречаюсь со следующей ошибкой;

 Warning: simplexml_load_file() [function.simplexml-load-file]: http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerUserAgent=Mozilla/5.0%2B(Windows;%2BU;%2BWindows%2BNT%2B6.1;%2Ben-US;%2Brv:1.9.2.25)%2BGecko/20111212%2BFirefox/3.6.25&customerSessionId=&xml=%3CHotelListRequest%3E%3CarrivalDate%3E01/22/2012%3C/arrivalDate%3E%3CdepartureDate%3E01/24/2012%3C/departureDate%3E%3CRoomGroup%3E%3CRoom%3E%3CnumberOfAdults%3E1%3C/numberOfAdults%3E%3CnumberOfChildren%3E1%3C/numberOfChildren%3E%3CchildAges%3E4%3C/childAges%3E%3C/Room%3E%3C/RoomGroup%3E%3Ccity%3EAmsterdam%3C/city%3E%3CcountryCode%3ENL%3C/countryCode%3E%3CsupplierCacheTolerance%3EMED%3C/supplierCacheTolerance%3E%3C/HotelListRequest%3E%20:1: parser error : Start tag expected, '<' not found in C:\Program Files\XAMPP\xampplite\htdocs\hotel\results.php on line 29 

Наиболее заметной частью этой ошибки является: ошибка парсера: ожидаемый стартовый тег, «<» не найден

Я хотел бы получить доступ к этому файлу и использовать PHP / SimpleXML для форматирования результатов – но до сих пор я застрял.

Я думал, что эта нить ЗДЕСЬ, которая говорит о rawurlencode, возможно, помогла, но это не так, либо это, либо я что-то упустил.

Solutions Collecting From Web of "Использование SimpleXML для загрузки удаленного URL-адреса"

Результаты возвращаются как json. Замените simplexml_load_file на json_decode и вы увидите правильный объект.

Если вы хотите использовать xml, вам нужно указать его в заголовках. Следующий код вернет действительный xml:

 $context = stream_context_create(array('http' => array('header' => 'Accept: application/xml'))); $url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerSessionId=&xml=<HotelListRequest><arrivalDate>01/22/2012</arrivalDate><departureDate>01/24/2012</departureDate><RoomGroup><Room><numberOfAdults>1</numberOfAdults><numberOfChildren>1</numberOfChildren><childAges>4</childAges></Room></RoomGroup><city>Amsterdam</city><countryCode>NL</countryCode><supplierCacheTolerance>MED</supplierCacheTolerance></HotelListRequest> '; $xml = file_get_contents($url, false, $context); $xml = simplexml_load_string($xml); print_r($xml); ?>