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


Simple or Complex? Issues with XML via PHP

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

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

下面是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

我认为我走在了正确的轨道上。当时的想法是让每组人都回来。循环以获得子组,然后转到下一个组并重复,直到完成所有操作。

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

您有许多row作为数组,您应该像下面的一样在foreach中设置$xml_short2

foreach ($xml_short as $row) {
    echo $row{'groupName'};
    $xml_short2 = $row->rowset->row;
    foreach ($xml_short2 as $row2) {
       echo $row2{'subgrName'};
    }
}