2011-05-28 92 views
0

检索XML我碰到与下面的PHP代码的麻烦:帮助瓦特/通过卷曲

<?php 
$url = "http://api.ean.com/ean-services/rs/hotel/v3/list? minorRev=1&cid=55505&apiKey=58x5kuujub8xbb5tzv3a2a8q&locale=en_US&currencyCode=USD&xml= <HotelListRequest><destinationString>Seattle</destinationString> <arrivalDate>08/01/2011</arrivalDate><departureDate>08/03/2011</departureDate><RoomGroup> <Room><numberOfAdults>2</numberOfAdults></Room></RoomGroup> <numberOfResults>1</numberOfResults></HotelListRequest>"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 15); 
$contents = curl_exec ($ch); 
echo $contents; 
curl_close($ch); 
?> 

的问题是, $内容包含标记,这不是XML可言,所以我不能解析它。在浏览器的地址栏中输入URL的混淆B/C将显示XML文档,但我似乎无法得到一个有效的XML文档/此代码。

下面是字符串的一个片段被返回:

{"HotelListResponse":{"customerSessionId":"0ABAA83D-4428-4913-0382-28FBB1901EFC","numberOfRoomsRequested":1,"moreResultsAvailable":true,"cacheKey":"-32344284:1303828fbb1:-1ef9","cacheLocation":"10.186.168.61:7305","HotelList":{"@size":"1","HotelSummary":{"@order":"0" 

有人能向我解释,我要去哪里错了吗?

Thx。

回答

0

尝试删除空格: “/ V3 /列表minorRev = 1?” - > “/ V3 /列表minorRev = 1?”

  1. 让您的网址是正确的,像

    $url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?type=xml&minorRev=1&cid=55505&apiKey=58x5kuujub8xbb5tzv3a2a8q&locale=en_US&currencyCode=USD&xml=%3CHotelListRequest%3E%3CdestinationString%3ESeattle%3C/destinationString%3E%3CarrivalDate%3E08/01/2011%3C/arrivalDate%3E%3CdepartureDate%3E08/03/2011%3C/departureDate%3E%3CRoomGroup%3E%3CRoom%3E%3CnumberOfAdults%3E2%3C/numberOfAdults%3E%3C/Room%3E%3C/RoomGroup%3E%20%3CnumberOfResults%3E1%3C/numberOfResults%3E%3C/HotelListRequest%3E';

  2. 加选择仅接受XML - 在浏览器中我们有这样的标题 - 在卷曲 - 无:

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml'));

  3. 利润!

+0

你是个天才!你解决了我的一个主要问题,非常感谢你! – liveandream 2012-03-16 06:21:28

+0

@liveandream tnx,只需按下“向上”按钮:) – gaRex 2012-03-16 10:52:32

1

,而不是试图让XML,它可以不提供,你总是可以用你所拥有的,这似乎是JSON工作。

$ response = json_decode($ contents,true);

这会给你一个你的数据的关联数组,这可以更容易地处理。