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

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'};
    }
}
于 2013-08-30T08:39:41.990 に答える