Search code examples
phpxmlforeachxmlreader

Error in reading xml


I have an xml sheet of some hotel details, but when I try to read all data, its not showing all datas, just repeating the first hotel name or hotel data. Below have the link to xml code.

myxmlfile

and I have tried this code to retrieve data,

            $availabilityrs = simplexml_load_string($response3);
            $hotel = $availabilityrs->hotels->hotel;
            $hotel1 = $availabilityrs->hotels->hotel;
            $room_nodes = $hotel->rooms->room;
            foreach ($hotel1 as $room) {
                echo "Hotel Name: ".$hotel['name']."\n"; ?><br /><?php
                echo "Hotel Category: ".$hotel['categoryName']."\n"; ?><br /><?php
                echo "Hotel Destination: ".$hotel['destinationName']."\n"; ?><br /><?php
                echo "Room Name: ".$room['name']."\n"; ?><br /><br /><?php
            }

and the result is like

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Ibis Hotel Salmiya

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Jumeirah Messilah Beach Hotel & Spa

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: The Regency Hotel

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Times Square Suites

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Ibis Sharq

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Mövenpick Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: JW Marriott Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Radisson Blu Hotel Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Safir Residence

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Carlton Tower Hotel Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Courtyard By Marriott Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Oasis Hotel Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: The Palms Beach Hotel & Spa

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Marina Hotel

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Al Manshar Rotana Hotel

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Symphony Style Hotel Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Millennium Hotel & Convention Centre Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Le Royal Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Le Royal Tower Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Ramada Kuwait Hotel

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Crowne Plaza Kuwait

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Al Jahra Copthone Hotel & Resort

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Best Western Plus Mahboula

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: New Park Hotel

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: Flora Park Apartment

Hotel Name: Ibis Hotel Salmiya Hotel Category: 3 STARS Hotel Destination: Kuwait Room Name: HOLIDAY INN KUWAIT AL THURAYA CITY

How to get all the data of hotel details


Solution

  • Try this i have made few changes:

    $xml = "http://www.medhyaftravel.com/api/api3/myxmlfile.xml";
    $xml = preg_replace(
                      '/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16\2/u',
                      '\1utf-8\2', file_get_contents($xml));
    $xmlcont = new SimpleXMLElement($xml);
    
    foreach($xmlcont as $url) { 
    
    $hotel = $url->hotel;
    
    foreach($hotel as $hot){
    
    echo $hot['name']; echo "</br>"; echo $hot['categoryName'];echo "</br>";
    
    $roomtest =  $hot->rooms->room;  echo $roomtest['name'];
    
    }
     }
    

    OR

    $xml = "http://www.medhyaftravel.com/api/api3/myxmlfile.xml";
    $xml = preg_replace(
                      '/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16\2/u',
                      '\1utf-8\2', file_get_contents($xml));
     $availabilityrs = simplexml_load_string($xml);
     foreach($availabilityrs as $url) {
    
    $hotel = $url->hotel;
    
    foreach($hotel as $hot){
    
    
    $roomtest =  $hot->rooms->room;
    
    echo "Hotel Name: ".$hot['name']."<br/>";
    echo "Hotel Category: ".$hot['categoryName']."<br/>";
    echo "Hotel Destination: ".$hot['destinationName']."<br/>";
    echo "Room Name: ".$roomtest['name']."<br/><br/><br/>";
    
    
    
    }   
    
     }