通八洲科技

PHP 中使用 SimpleXML 精确解析 XML 字符串并提取结构化数据

日期:2025-12-29 00:00 / 作者:心靈之曲

本文介绍如何在 php 中直接使用 simplexml 扩展高效解析 xml 字符串,无需转换为数组或 json,即可按需提取 `` 元素的 `number`、`worked`、`active_hours` 和 `inactive_hours` 等关键字段,并自动处理缺失节点,默认补零。

在 PHP 中处理 XML 数据时,无需强行转成数组或 JSON——SimpleXML 对象本身已具备直观、可遍历的 DOM 式访问能力,且性能更优、代码更简洁。针对你提供的 XML 结构(根节点 包含多个 子节点,部分 内嵌 、、 子元素),推荐以下标准实践:

✅ 正确做法:原生遍历 SimpleXML 对象

$xml_string = <<
    
    
    
        1
        7
        7
    
    
        1
        12
        13
    
    
    

XML;

// 加载 XML 字符串(注意错误抑制,生产环境建议启用错误报告)
$xml = simplexml_load_string($xml_string);
if ($xml === false) {
    throw new RuntimeException('Invalid XML string');
}

$result = [];
foreach ($xml->day as $day) {
    $dayNumber = (int) $day['number']; // 获取属性值,强制转 int

    // 使用空合并运算符(?:)安全读取子元素,缺失时返回 0
    $result[$dayNumber] = [
        'worked'        => (int) ($day->worked ?? 0),
        'active_hours'  => (int) ($day->active_hours ?? 0),
        'inactive_hours'=> (int) ($day->inactive_hours ?? 0),
    ];
}

print_r($result);

? 关键要点说明

⚠️ 注意事项

通过上述方式,你既能精准提取目标字段,又能保持代码简洁、健壮、可维护——这才是 PHP 解析 XML 的推荐路径。