使用PHP从URL获取XML数据

使用PHP从URL获取XML数据,php,html,xml,simplexml,Php,Html,Xml,Simplexml,在PHP中使用XML的新手。下面的示例是针对类似问题的前一个问题给出的解决方案,应该可以正常工作。我没有在加载页面时出现任何PHP错误,但是,我没有看到任何显示(数组)。我一直在看一个又一个的例子,但我一辈子都搞不明白这一点。我想知道PHP是否看到URL加载可能需要一点时间,并且等待的时间不够长 $context = stream_context_create(array('http' => array('header' => 'Accept: application/xml'))

在PHP中使用XML的新手。下面的示例是针对类似问题的前一个问题给出的解决方案,应该可以正常工作。我没有在加载页面时出现任何PHP错误,但是,我没有看到任何显示(数组)。我一直在看一个又一个的例子,但我一辈子都搞不明白这一点。我想知道PHP是否看到URL加载可能需要一点时间,并且等待的时间不够长

$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);
$context=stream\u context\u create(数组('http'=>array('header'=>'Accept:application/xml'));
$url='1http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&    apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US¤cyCode=USD&customerIpAddress=10.184.2.9&customerSessionId=&xml=01/22/201201/24/2012114阿姆斯特丹NLMED';
$xml=file\u get\u contents($url,false,$context);
$xml=simplexml\u load\u字符串($xml);
打印(xml);
任何反馈都很好。谢谢

Matt

查看$url

在“&”和“apiKey”之间有一个空格,请首先删除该空格

我明白了:

<ns2:HotelListResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/">
  <EanWsError>
    <itineraryId>-1</itineraryId>
    <handling>RECOVERABLE</handling>
    <category>DATA_VALIDATION</category>
    <exceptionConditionId>-1</exceptionConditionId>
    <presentationMessage>
        Data in this request could not be validated: Specified arrival date is prior to today's date.
    </presentationMessage>
    <verboseMessage>
        Data in this request could not be validated: Specified arrival date is prior to today's date.
    </verboseMessage>
    <ServerInfo instance="71" timestamp="1394560288" serverTime="12:51:28.803-0500"/>
  </EanWsError>
  <customerSessionId>0ABAAA47-1A0E-8A91-44B2-24409C793B7A</customerSessionId>
</ns2:HotelListResponse>

使我的代码与您的代码不同的是,我绝对确保查询url中没有空格。

是的,当我复制和粘贴时,这只是一个格式问题。很抱歉是的,如果你将URL直接复制到浏览器中,这就是出现的内容,但是,我没有从上面的PHP代码中得到任何东西…令人沮丧。。。还是什么都没看到。然而,我看到显示“bool(false)”。我猜那是从“var_dump”来的。web服务器是否会导致此问题?我目前正在使用ipage。
$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&';
$url.= 'apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD';
$url.= '&customerIpAddress=10.184.2.9&customerSessionId=&xml=<HotelListRequest>';  
$url.= '<arrivalDate>01/22/2012</arrivalDate><departureDate>01/24/2012</departureDate><RoomGroup>';
$url.= '<Room><numberOfAdults>1</numberOfAdults><numberOfChildren>1</numberOfChildren>';
$url.= '<childAges>4</childAges></Room></RoomGroup><city>Amsterdam</city><countryCode>NL</countryCode>'; 
$url.= '<supplierCacheTolerance>MED</supplierCacheTolerance></HotelListRequest>';

$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
var_dump($xml);
object(SimpleXMLElement)#1 (2) { ["EanWsError"]=> object(SimpleXMLElement)#2 (7) { ["itineraryId"]=> string(2)     "-1" ["handling"]=> string(11) "RECOVERABLE" ["category"]=> string(15) "DATA_VALIDATION" ["exceptionConditionId"]=> string(2) "-1" ["presentationMessage"]=> string(93) "Data in this request could not be validated: Specified arrival date is prior to today's date." ["verboseMessage"]=> string(93) "Data in this request could not be validated: Specified arrival date is prior to today's date." ["ServerInfo"]=> object(SimpleXMLElement)#3 (1) { ["@attributes"]=> array(3) { ["instance"]=> string(3) "113" ["timestamp"]=> string(10) "1394564545" ["serverTime"]=> string(17) "14:02:25.060-0500" } } } ["customerSessionId"]=> string(36) "0ABAAA71-C7B2-7914-4B22-8599F39026A8" }