php中查找路径的xpath查询

时间:2012-03-01 14:26:08

标签: php xml xpath

<HotelList>
  <HotelSummary>
    <hotelId>247331</hotelId>
    <name>The Accord</name>
    <RoomRateDetailsList>
      <RoomRateDetails>
        <roomTypeCode>200052939</roomTypeCode>
        <rateCode>200309117</rateCode>
        <RateInfos size="1">
          <RateInfo rateChange="false" promo="true" priceBreakdown="true">
            <RoomGroup>
              <Room>
                <numberOfAdults>2</numberOfAdults>
              </Room>
            </RoomGroup>
            <ChargeableRateInfo total="103.01" surchargeTotal="26.52" nightlyRateTotal="76.49" maxNightlyRate="76.49" currencyCode="USD" commissionableUsdTotal="76.49" averageRate="76.49" averageBaseRate="101.99">
          </ChargeableRateInfo>
        </RateInfo>
      </RateInfos>
    </RoomRateDetails>
  </RoomRateDetailsList>
</HotelSummary>
</HotelList>

朋友你好,     我需要显示<numberofresults>&amp;的值xpath中的<chargeablerateinfo>节点 或simpleXML plz给我如何访问这些元素。    我用过这段代码

  foreach($item ->('RoomRateDetailsList/RoomRateDetails/RateInfos/RateInfo /RoomGroup/Room/') as $items){
     echo $item->numberofresults;
  }

但它没有用 请给我建议或完整的编码 提前谢谢

2 个答案:

答案 0 :(得分:1)

  

我需要显示<numberofresults>&amp;的值   xpath或simpleXML plz中的<chargeablerateinfo>节点给我如何操作   访问这些元素。

在提供的XML文档中没有名为numberofresults 的元素 - 您可能意味着numberOfAdults

此XPath表达式

//RateInfo/RoomGroup/Room

选择任何Room元素,该元素是RoomGroup的子元素,该元素是XML文档中任何RateInfo元素的子元素。

此XPath表达式

//RateInfo/RoomGroup/Room/numberOfAdults

选择前一个表达式所选元素的numberOfAdults子元素。

这个XPath表达式

//RateInfo/ChargeableRateInfo 

选择与ChargeableRateInfo

相关联的RoomGroup元素

因此,在您的代码中,您可能希望执行类似的操作

$xml = simplexml_load_file("test.xml");

$rateInfos = $xml->xpath('//RateInfo');                
foreach ($rateInfos as $rateInfo) 
{    
   $rooms = $rateInfo->xpath('RoomGroup/Room');   

   foreach ($rooms as $room)
    {
      echo $room->numberOfAdults; 
    }

  $chargeableRateInfo = $rateInfo->xpath('ChargeableRateInfo');   

  // Do whatever is wanted with $chargeableRateInfo               
}  

答案 1 :(得分:0)

$xml = simplexml_load_file("test.xml");
$rooms = $xml->xpath('//Room');
foreach ($rooms as $room) {
     echo $room->numberOfAdults;
}

应该做的伎俩