2016-04-20 5 views
0

ich mit der folgenden XML-Antwortstruktur arbeite:PHP - Iterate Obwohl Additonial XML Knoten

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

Bisher mit Anleitung von einem Kerl Stack-Überlauf Mitglied, ich war in der Lage, eine Arbeits JSON Ausgabe zu konstruieren, basierend auf der folgende PHP-Code:

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; 

Diese nur iteriert durch einen einzelnen Knoten <R> vor der Fertigstellung. Wie kann ich nun den Code anfügen, um jeden Knoten <R> zu durchlaufen?

Vielen Dank im Voraus.

+0

weis es nicht direkt in 'v', schneiden Sie es auf jeden' ​​R', so nisten eine weitere Schleife, erste Schleife, bis ' R' zuerst, dann jedes Stück 'R' dann zeigen auf' VS-> V' – Ghost

Antwort

1

Gerade jetzt, Sie gehen direkt zu $CompressedVehicles->F->RS->R->VS->V, ändern nur um es zu Schleife jeden <R> Knoten:

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

Diese Iterierte zu jedem <R>.

dann für jede <R>, fügen Sie ein anderes Nest für die $vehicle:

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

DANKE! Ich starrte und verwirrte es für über eine Stunde und vermisste etwas so Einfaches. – proph3t

+0

@proph3t sicher froh das hat geholfen – Ghost