简单还是复杂?通过PHP的XML问题

时间:2013-08-30 08:29:36

标签: php xml nodes

我试图通过XML文件将详细信息显示为回显。它显示了一些细节,但不是全部。

我已经尝试了几种方法来做到这一点,任何帮助都会很棒!

以下是XML代码的摘要。

    <result>
    <rowset name="TestGroups" key="groupID" columns="groupName,groupID">
    <row groupName="Group 1" groupID="123">
      <rowset name="subGroup" key="typeID" columns="subgrName,groupID">
         <row subgrName="Sub Group A" groupID="123">...</row>
         <row subgrName="Sub Group b" groupID="123">...</row>
      </rowset>
    </row>

    <rowset name="TestGroups" key="groupID" columns="groupName,groupID">
    <row groupName="Group 2" groupID="456">
      <rowset name="subGroup" key="typeID" columns="subgrName,groupID">
         <row subgrName="Sub Group C" groupID="456">...</row>
         <row subgrName="Sub Group D" groupID="456">...</row>
      </rowset>
    </row>
    <result>

目标是用回声输出信息。列出组后跟每个子组。

以下是当前php代码的片段:

    $string = file_get_contents("Calls the XML FILE");

    $xml = new SimpleXMLElement($string);
    $xml_short = $xml->result->rowset->row ;  
    $xml_short2 = $xml->result->rowset->row->rowset->row ;  



    foreach ($xml_short as $row ) {

    echo $row{'groupName'};

         foreach ($xml_short2 as $row2 ) {


           echo $row{'subgrName'};

         }

    }

当前输出:

    Group 1
    Group 2

我需要的输出是:

    Group 1
       Sub Group A
       Sub Group B

    Group 2
       Sub Group C
       Sub Group D

我认为我走在正确的轨道上。想法是回归每个小组。循环获取子组然后转到下一组并重复,直到完成所有。

我尝试了几种不同的方法,似乎都失败了或者无法正常工作。所以任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您有多个row作为数组,您应该在$xml_short2内设置foreach,如下所示

foreach ($xml_short as $row) {

    echo $row{'groupName'};

    $xml_short2 = $row->rowset->row;

    foreach ($xml_short2 as $row2) {
       echo $row2{'subgrName'};
    }
}