我有一些酒店细节的xml表格,但是当我试图读取所有数据时,它并没有显示所有数据,只是重复了第一个酒店名称或酒店数据。下面有到xml代码的链接。
myxmlfile文件
我试过这段代码来检索数据,
$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
}结果就像
酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特房间名称: Ibis饭店Salmiya 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称: Jumeirah Messilah海滩酒店及水疗中心 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:摄政酒店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:时代广场套房 酒店名称: Ibis饭店Salmiya饭店类别:三星级酒店目的地:科威特房间名称: Ibis Sharq 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特房间名称:科威特莫文皮克 酒店名称: Ibis饭店Salmiya饭店类别:三星级酒店目的地:科威特房间名称: JW万豪科威特 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特房间名称: Radisson Blu酒店科威特 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特房间名称: Safir住宅 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:科威特卡尔顿大厦酒店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:万豪酒店庭院 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:科威特绿洲酒店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:棕榈滩酒店及水疗中心 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称: Marina饭店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称: Al Manshar Rotana酒店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:科威特交响乐风格酒店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:科威特千年酒店及会议中心 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称: Le Royal科威特 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:科威特皇家塔 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称: Ramada科威特酒店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:科威特皇冠广场 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称: Al Jahra Copthone酒店及度假村 酒店名称: Salmiya酒店类别:三星级酒店目的地:科威特客房名称:贝斯特韦斯特普拉斯马布拉酒店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:新公园酒店 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:弗洛拉公园公寓 酒店名称: Ibis饭店Salmiya酒店类别:三星级酒店目的地:科威特客房名称:科威特假日酒店
如何获取酒店详细信息
发布于 2016-12-13 07:55:07
尝试一下,我做了几处改变:
$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'];
}
}或
$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/>";
}
}发布于 2016-12-13 10:25:02
在循环之外分配$hotel变量。当你迭代它时,它不会改变。
$availabilityrs = simplexml_load_string($response3);
$hotels = $availabilityrs->hotels->hotel;
foreach ($hotels as $hotel) {
echo "Hotel Name: ".$hotel['name']."\n";
//...
}SimpleXML的语法魔术允许您将其作为节点列表(对于foreach())或作为单个元素(列表的第一个)来处理。
https://stackoverflow.com/questions/41115627
复制相似问题