2012-03-17 26 views
0

您好我想從XML只返回一個特定的元素..更容易這樣的解釋:獲取包含在XML字符串的某些子元素的所有根元素

<HotelList activePropertyCount="129" size="20"> 
<HotelSummary ubsScore="820" order="0"> 
<hotelId>121196</hotelId> 
<name>ME Cancun - Complete ME All Inclusive</name> 
<address1>Boulevard Kukulkan Km 12</address1> 
<city>Cancun</city> 
<postalCode>77500</postalCode> 
<countryCode>MX</countryCode> 
</HotelSummary> 
</HotelList> 

有一堆這些都與不同的酒店ID。我需要得到具有<hotelID>121196</hotelID>的子元素的<HotelSummary>。我無法弄清楚如何做到這一點。我正在使用php,這是我迄今爲止所有:

<? 
$post_string = 'type=xml&cid=55505&minorRev=13&apiKey=4sr8d8bsn75tpcuja6ypx5g3&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerUserAgent=Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/535.11+(KHTML,+like+Gecko)+Chrome/17.0.963.79+Safari/535.11&customerSessionId=&xml=<HotelListRequest><arrivalDate>04/05/2012</arrivalDate><departureDate>04/07/2012</departureDate><RoomGroup><Room><numberOfAdults>2</numberOfAdults></Room><Room><numberOfAdults>2</numberOfAdults><numberOfChildren></numberOfChildren></Room></RoomGroup><city>Cancun</city><countryCode>MX</countryCode><supplierCacheTolerance>MED_ENHANCED</supplierCacheTolerance></HotelListRequest> '; 
$path = "http://api.ean.com/ean-services/rs/hotel/v3/list"; //Relative path to the file with $_POST parsing 
$ch = curl_init($path); 
$fp = fopen('room.xml','w'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); //Send the data to the file 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml')); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
$val = curl_exec($ch); 
curl_close($ch);//Close curl session 
fclose($fp); //Close file overwrite 

$data = simplexml_load_file('room.xml'); 

$info=$data->HotelList->HotelSummary->hotelId="123658"; 
$rating=$info->hotelRating; 
echo $rating; 
?> 

提前謝謝!

回答

0

循環瀏覽並查找特定的ID。

foreach($data->HotelList->HotelSummary as $hotel) { 
    if ($hotel->hotelId == 121196) { 
     // This is it. 
     break; 
    } 
} 
+0

這幾乎奏效!但你肯定回答了問題。我只需將$ $換成$ hotel即可,而且它非常美觀!非常感謝你! – liveandream 2012-03-17 17:51:00

+0

@liveandream哎呀,我一直在JavaScript土地太多。很高興你有它的工作! – alex 2012-03-17 17:58:29

相關問題