XPath查询在PHP中查找路径


xpath query for find path in php

<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>

朋友们,您好, 我需要在 xpath 中显示 <numberofresults><chargeablerateinfo> 节点的值或简单的XML,请告诉我如何访问这些元素。 我使用了这个代码

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

但它不起作用请给我建议或完整编码提前致谢

我需要显示 <numberofresults><chargeablerateinfo> xpath或simpleXML中的节点请告诉我如何 访问这些元素。

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

此 XPath 表达式

//RateInfo/RoomGroup/Room

选择作为 XML 文档中任何RateInfo元素的子元素的RoomGroup子级的任何Room元素。

此 XPath 表达式

//RateInfo/RoomGroup/Room/numberOfAdults

选择由上一个表达式选择的元素的numberOfAdults子元素。

而这个 XPath 表达式

//RateInfo/ChargeableRateInfo 

选择与RoomGroup关联的ChargeableRateInfo元素

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

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

应该做这个技巧