2012-06-07 26 views
3

我想从下面的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小时),我得到了上述错误。

任何人都可以帮助解决这个问题吗?

回答

3

在第二块你有$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>'; 
} 
+0

太棒了!谢谢!现在,我只想弄清楚如何将每组数据存储在单独的数组中。 – msg04

相关问题