读取错误 xml
Error in reading xml
我有一些酒店详细信息的 xml sheet,但是当我尝试读取所有数据时,它没有显示所有数据,只是重复第一个酒店名称或酒店数据。下面有 link 到 xml 代码。
并且我已经尝试使用此代码来检索数据,
$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
}
结果就像
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
如何获取酒店详情的所有数据
试试这个我做了一些改动:
$xml = "http://www.medhyaftravel.com/api/api3/myxmlfile.xml";
$xml = preg_replace(
'/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16/u',
'utf-8', 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'];
}
}
或
$xml = "http://www.medhyaftravel.com/api/api3/myxmlfile.xml";
$xml = preg_replace(
'/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16/u',
'utf-8', 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/>";
}
}
您在循环外分配 $hotel
变量。当你迭代它时它不会改变。
$availabilityrs = simplexml_load_string($response3);
$hotels = $availabilityrs->hotels->hotel;
foreach ($hotels as $hotel) {
echo "Hotel Name: ".$hotel['name']."\n";
//...
}
SimpleXMLs 语法魔术允许您将其视为节点列表(对于 foreach()
)或单个元素(列表的第一个)。
我有一些酒店详细信息的 xml sheet,但是当我尝试读取所有数据时,它没有显示所有数据,只是重复第一个酒店名称或酒店数据。下面有 link 到 xml 代码。
并且我已经尝试使用此代码来检索数据,
$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
}
结果就像
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
如何获取酒店详情的所有数据
试试这个我做了一些改动:
$xml = "http://www.medhyaftravel.com/api/api3/myxmlfile.xml";
$xml = preg_replace(
'/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16/u',
'utf-8', 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'];
}
}
或
$xml = "http://www.medhyaftravel.com/api/api3/myxmlfile.xml";
$xml = preg_replace(
'/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16/u',
'utf-8', 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/>";
}
}
您在循环外分配 $hotel
变量。当你迭代它时它不会改变。
$availabilityrs = simplexml_load_string($response3);
$hotels = $availabilityrs->hotels->hotel;
foreach ($hotels as $hotel) {
echo "Hotel Name: ".$hotel['name']."\n";
//...
}
SimpleXMLs 语法魔术允许您将其视为节点列表(对于 foreach()
)或单个元素(列表的第一个)。