0

我正在尝试通过 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

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

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

4

1 回答 1

0

你有很多rowas 数组,你应该$xml_short2在里面设置foreach如下

foreach ($xml_short as $row) {

    echo $row{'groupName'};

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

    foreach ($xml_short2 as $row2) {
       echo $row2{'subgrName'};
    }
}
于 2013-08-30T08:39:41.990 回答