在PHP中使用多个具有相同名称属性的XML文件解析数据
问题描述:
我想从下面的XML解析数据(我缩短了很多数据以给出数据的例子)。在PHP中使用多个具有相同名称属性的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个小时解决)ok了数据的输出,但是当我尝试拉从数据第二套(解决不到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>';
}
太棒了!谢谢!现在,我只想弄清楚如何将每组数据存储在单独的数组中。 – msg04