在 php 和 xml 中获取包含特定值的 xml 节点数

Posted

技术标签:

【中文标题】在 php 和 xml 中获取包含特定值的 xml 节点数【英文标题】:Getting number of xml nodes containing certain value in php and xml 【发布时间】:2012-09-04 23:35:24 【问题描述】:

您好,我正在尝试获取具有特定内容或值的所有节点的计数。在这种情况下,我有一个 xml:

<hotel>
<city>Cancun</city>
<postalCode>77500</postalCode>
<countryCode>MX</countryCode>
<airportCode>CUN</airportCode>
<supplierType>E</supplierType>
<propertyCategory>1</propertyCategory>
<hotelRating>4.0</hotelRating>
<confidenceRating>52</confidenceRating>
</hotel>

我需要找到所有值为 4 的 hotelRating 并计算我的 xml 列表中有多少个。我不知道如何用 php 做到这一点。如果有人能帮我解决这个问题,我将不胜感激!

顺便说一下,我已经将xml文件连接如下,并且能够获取数据和发送数据。

$post_string= 'type=xml&cid=222&minorRev=14&apiKey=222&locale='.$userLocale.'&currencyCode='.$userCurr.'&customerIpAddress='.$userIp.'&customerUserAgent='.$userAgent.'&xml=<HotelListRequest><destinationId>'.$destinationId.'</destinationId><arrivalDate>'.$arriving.'</arrivalDate><departureDate>'.$departing.'</departureDate><RoomGroup>'.$xmlQuery.'</RoomGroup><supplierCacheTolerance>MED_ENHANCED</supplierCacheTolerance></HotelListRequest> ';
//Relative path to the file with $_POST parsing
$path = "http://api.ean.com/ean-services/rs/hotel/v3/list"; 
$ch = curl_init($path); 
$fp = fopen('xml/data.xml','w');
//Send the data to the file
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml')); 
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FILE, $fp);
$val = curl_exec($ch);
curl_close($ch);//Close curl session
fclose($fp); //Close file overwrite
$data = simplexml_load_file('xml/data.xml');

提前感谢您的帮助!!!

【问题讨论】:

【参考方案1】:
foreach ($data->hotel as $hotel)

    if ($hotel->hotelRating == '4.0')
    
        //  hotel with 4.0 rating found
    

【讨论】:

【参考方案2】:
$count = $data->xpath("count(\"//hotel[hotelRating= '4.0']\")");

将为您提供hotelrating = 4.0 的酒店数量。

【讨论】:

以上是关于在 php 和 xml 中获取包含特定值的 xml 节点数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中使用 XML 查询获取 NWMLS 数组值的完整描述?

C# Linq 计算具有特定值的 XML 段

PHP XML 到具有属性和值的数组/对象

在 Android 中通过 onClick 事件通过 XML 获取特定条目

Powershell XML选择具有特定值的节点

在名称属性中获取具有“标题”作为值的xml标签之间的值?