我有一个来自外部服务器的嵌套xml,如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<ResponseDetails Language="en">
<SearchHotelPriceResponse>
<HotelDetails>
<Hotel HasExtraInfo="true" HasMap="true" HasPictures="true"
Recommended = "true">
<City Code="AMS"><![CDATA[ Amsterdam ]]></City>
<Item Code="AME"><![CDATA[ AMERICAN ]]></Item>
</Hotel>
<Hotel HasExtraInfo="true" HasMap="true" HasPictures="true"
Recommended = "true">
<City Code="AMS"><![CDATA[ Amsterdam ]]></City>
<Item Code="AME"><![CDATA[ AMERICAN2 ]]></Item>
</Hotel>
</HotelDetails>
</SearchHotelPriceResponse>
</ResponseDetails>
</Response>
我可以在酒店内有很多其他级别,但第一个目标是取Item
值
我试过这样的方式:
$hotelNodes = $xml_en->getElementsByTagName('Hotel');
foreach($hotelNodes as $hotel) {
//how to print item value?!
}
我必须制作另一个getElementsByTagName
,或者可以使用像$hotel->getElementsByTagName('Item')->nodeValue
这样的东西来做这件事吗?
答案 0 :(得分:2)
$xp = new DOMXPath($xml_en);
$items = $xp->query('//Hotel/Item');
foreach($items as $item) {
echo $item->nodeValue;
}
答案 1 :(得分:0)
试试这个:
$hotelNodes = $xml->getElementsByTagName('Hotel');
foreach($hotelNodes as $hotel) {
$nameofitem = $hotel->getElementsByTagName( "Item" );
$nameofcity = $hotel->getElementsByTagName( "City" );
echo('<p>name hotel: '.$nameofitem->item(0)->nodeValue.' name city: '.$nameofcity->item(0)->nodeValue.'</p>');
}