You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何读取交错XML子节点?获取指定分类平均评分

Solution for Extracting Specific Subcategory Ratings from Complex XML

Hey there! Let's break down how to grab those wifi and location average ratings from your new XML structure. The key issue here is that you're dealing with repeating <subcategoryRating> nodes, so we can't just reference them directly by path—we need to loop through and filter for the categories you care about.

First, Let's Assume Your XML Structure Looks Something Like This

(Adjust this to match your actual API response if needed):

<business>
  <subcategoryRating>
    <subcategoryRating>
      <name>wifi</name>
      <averageRating>4.2</averageRating>
    </subcategoryRating>
    <subcategoryRating>
      <name>location</name>
      <averageRating>4.7</averageRating>
    </subcategoryRating>
    <!-- Additional subcategory nodes here -->
  </subcategoryRating>
</business>

Step-by-Step Code Implementation

Here's how to extract the ratings into separate variables using simplexml_load_file:

// Load the XML data as before
$xml = simplexml_load_file('your-api-endpoint.xml');

// Initialize variables to hold your target ratings
$wifiRating = null;
$locationRating = null;

// Access the nested list of subcategoryRating nodes
$allSubcategoryRatings = $xml->business->subcategoryRating->subcategoryRating;

// Loop through each rating node to find matches
foreach ($allSubcategoryRatings as $ratingNode) {
    // Convert the category name to a string (critical for comparison)
    $categoryName = (string)$ratingNode->name;
    
    // Check which category we're dealing with and assign the rating
    if ($categoryName === 'wifi') {
        $wifiRating = (float)$ratingNode->averageRating;
    } elseif ($categoryName === 'location') {
        $locationRating = (float)$ratingNode->averageRating;
    }
}

// Now you can use these variables elsewhere in your code
echo "Wifi Average Rating: " . $wifiRating . "\n";
echo "Location Average Rating: " . $locationRating . "\n";

Important Notes

  • Adjust for Attribute-Based Categories: If your XML uses attributes instead of child nodes for category names (e.g., <subcategoryRating name="wifi">), replace (string)$ratingNode->name with (string)$ratingNode['name'].
  • Type Casting: Using (string) and (float) ensures we convert the SimpleXMLElement objects to native PHP types, avoiding unexpected behavior when using the values later.
  • Fallback Values: If a category might be missing from the XML, the variables will stay null—you can set default values (like 0 or 'N/A') if needed.

内容的提问来源于stack exchange,提问作者Andreas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:53:11