我们需要更新客户正在使用的旧API。我们使用simplexml_load_file获取数据。新结构有点复杂,我找不到检索新数据的方法。
新结构如下所示:
在我们使用$ratingPrice = $xml->hotel->ratingPrice;
获取值之前。
现在,我需要检索$xml->business->subcategoryRating->subcategoryRating->averageRating
。我现在坚持了。
我如何获得wifi或位置的平均评分,并将它们以单个变量输出?
答案 0 :(得分:1)
如果您的信息顺序始终相同(例如Wi-Fi,位置,公寓,清洁度),那么您可以
$xml->business->subcategoryRating->subcategoryRating[x]->averageRating
所以x是你的xml列表的索引。然后
...subcategoryRating[0]->averageRating
对应于Wi-Fi和
...subcategoryRating[1]->averageRating
对应于位置等等。
答案 1 :(得分:0)
您可以将各种评级提取到数组中,然后使用相关索引处理您之后的数据。这使用(例如)<category id="location">
元素的id属性作为索引...
$ratings = [];
foreach ( $xml->business->subcategoryRatings->subcategoryRating as $rating ) {
$ratings[(string)$rating->category['id']] = (string)$rating->averageRating;
}
echo $ratings["location"].PHP_EOL;
最后一行需要更新才能访问您之后的特定元素。
答案 2 :(得分:0)
作为替代方法,您可以创建xpath表达式并使用xpath。
这将为您提供SimpleXMLElement个对象的数组。
$xml = simplexml_load_string($data);
$expression = '//business/subcategoryRatings/subcategoryRating[category[@id="wifi" or @id="location"]]';
foreach($xml->xpath($expression) as $item) {
$averageRating = (string)$item->averageRating;
}