duanchen6423 2016-04-20 00:48
浏览 41
已采纳

PHP - 通过其他XML节点迭代

I am working with the following XML response structure:

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

So far, with guidance from a fellow Stack Overflow member, I was able to construct a working JSON output based on the following 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;

This only iterates through a single <R> node before completion. How can I now append the code to iterate through each <R> node as well?

Thank you in advance.

  • 写回答

1条回答 默认 最新

  • duan_2000 2016-04-20 01:00
    关注

    Right now, you're directly going to $CompressedVehicles->F->RS->R->VS->V, just modify it to loop each <R> node:

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

    This iterate to each <R>.

    Then for each <R>, add another nest for the $vehicle:

    foreach($r->VS->V as $vehicle) 
    {
    // rest of your code
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?