我试图从下面的xml解析数据(我把数据缩短了很多,以给出数据的外观示例)。
对于每个属性,我需要将数据存储在一个单独的数组中。
XML文件

<report>
    <title>Resolution Times (Jun 07 00:21)</title>
    <sets>
        <set>
            <legend>Solved in Less than 2 Hours</legend>
            <values>
                <value data="8702" date="2012-05-24"/>
                <value data="8741" date="2012-05-25"/>
                <value data="8741" date="2012-05-26"/>
                <value data="8741" date="2012-05-27"/>
            </values>
        </set>
        <set>
            <legend>Solved in Less than 24 Hours</legend>
            <values>
                <value data="36990" date="2012-05-24"/>
                <value data="37094" date="2012-05-25"/>
                <value data="37096" date="2012-05-26"/>
                <value data="37144" date="2012-05-27"/>
            </values>
        </set>
    </sets>
</report>

下面是一些测试代码,我正在做的尝试和阅读的数据。出于测试目的,我只是打印出来看看实际提取了哪些数据。
$verifyReport = new SimpleXMLElement('305262.xml', null, true);
$testing = $verifyReport->sets->set->values->value;

echo '<ol>';
foreach($testing as $data)
{
    echo '<li>',
    $data['data'].PHP_EOL;
    echo '</li>';
}

echo '</ol>';

$testing1 = $verifyReport->sets->sets->values->value;

echo '<ol>';
foreach($testing1 as $data2)
{
    echo '<li>',
    $data2['data'].PHP_EOL;
    echo '</li>';
}

echo '</ol>';

下面是数据输出
1. 8702
2. 8741
3. 8741
4. 8741

Warning: Invalid argument supplied for foreach() in
/Applications/XAMPP/xamppfiles/htdocs/tango/test.php on line 23

我可以拉入第一组数据(在不到2小时内解决),但当我试图拉入第二组数据(在不到24小时内解决)时,我得到了上述错误。
有人能帮忙纠正这个问题吗?

最佳答案

在第二个块中有$testing1 = $verifyReport->sets->sets->values->value;,所以我猜第二个sets必须是set。但是无论如何,为什么不遍历$verifyReport->sets并读取for循环中的更多值呢?

new SimpleXMLElement('305262.xml', null, true);
foreach ($verifyReport->sets->set as $set) {
    echo '<ol>';
    foreach ($set->values->value as $data) {
        echo '<li>',
        $data['data'] . PHP_EOL;
        echo '</li>';
    }
    echo '</ol>';
}

关于php - 使用PHP中具有多个相同名称属性的XML文件解析数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10928036/

10-11 04:14
查看更多