2016-04-20 9 views
0

は、私は、次のXML応答構造で働いています:PHP - 反復もののAdditonial XMLノード

<CompressedVehicles> 
<F> 
<RS> 
<R> 
    <VS> 
     <V /> 
     <V /> 
    </VS> 
</R> 
<R> 
    <VS> 
     <V /> 
     <V /> 
    </VS> 
</R> 
</RS> 
</F> 
</CompressedVehicles> 

はこれまでのところ、仲間のスタックオーバーフローのメンバーの指導で、私は上のベースの作業JSON出力を構築することができました次のPHPコード:

header('Content-Type: application/json'); 

$xml = simplexml_load_file('inventory.xml'); 
$CompressedVehicles = $xml->CompressedVehicles; 

$attributes = array(); 
foreach($CompressedVehicles->F->attributes() as $key => $val) 
{ 
    $attributes[$key] = $val->__toString(); 
} 

$data = array(); 
foreach($CompressedVehicles->F->RS->R->VS->V as $vehicle) 
{ 
    $line = array(); 
    foreach($vehicle->attributes() as $key => $val) 
{ 
    $line[$attributes[$key]] = $val->__toString(); 
} 
$data[] = $line; 
} 

$json = json_encode($data); 
echo $json; 

これだけ反復単一<R>ノードを介して完了する前に。どのようにコードを追加して、各ノードにも同じように反復処理を行うことができますか?

ありがとうございます。各<R>

foreach($CompressedVehicles->F->RS->R as $r) 
{ 

この反復:

+0

ネストそう別のループ、第一のループ 'まで、' V'に直接指し示す各​​ 'R'にそれを切断しませんR 'を最初に押すと、 'R'の各部分が 'VS-> V'を指します – Ghost

答えて

1

は今、あなたは直接だけのループに各<R>ノードを、それを修正し、$CompressedVehicles->F->RS->R->VS->Vになるだろう。各<R>、次いで

$vehicleための別の巣を追加:

foreach($r->VS->V as $vehicle) 
{ 
// rest of your code 
+0

ありがとうございます!私はそれを見つめて1時間以上それをぶち壊し、簡単なことを逃した。 – proph3t

+0

@ proph3t確かにこれが助けてくれた – Ghost