帮助w /通过cURL检索XML

时间:2011-05-28 22:48:32

标签: php xml parsing curl

我遇到了以下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);
?>

问题是 $ contents 包含的标记根本不是XML,所以我无法解析它。令人困惑的b / c在我的浏览器地址栏中输入URL会显示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。

2 个答案:

答案 0 :(得分:1)

您可以随时使用您拥有的内容,而不是尝试获取可能未提供的XML。

  

$ response = json_decode($ contents,true);

这将为您提供数据的关联数组,这可以更容易使用。

答案 1 :(得分:0)

尝试删除空格:“/ v3 / list?minorRev = 1” - &gt; “/ 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中 - no:

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

  3. PROFIT !!!