2016-04-20 98 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>節點?

預先感謝您。

+0

不直接指向它變成'V',削減到每個'R',所以鳥巢另一個循環,第一循環,直到' R',然後每一個'R'然後指向'VS-> V' – Ghost

回答

1

現在,你直接去$CompressedVehicles->F->RS->R->VS->V,只需將其修改爲循環各<R>節點:

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

這迭代每個<R>

然後對於每個<R>,再添巢爲$vehicle

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

謝謝!我盯着它弄了一個多小時,錯過了一些很簡單的事情。 – proph3t

+0

@ proph3t很高興這有幫助 – Ghost