新手求助高手解决 PHP数组转换XML问题,研究好久都不行.

2025-05-16 08:28:55
推荐回答(2个)
回答(1):

$team=array(
    'id' => '22955',
    'video_order_id' => '22955',
    'is_audio' => '0',
    'status_format' => '待审核',
    'ftp_path' => '2013/1374/5695/2479/137456952479.ssm/',
    'lists' => array(array('PreviewMTA'=>'A','PreviewMTB'=>'B')),
    'lists1' => array(array('PreviewMTA'=>'B'))
 ); 

echo saveXML($team);
function saveXML($arr,$root = 'response'){
    if(!preg_match('/[a-zA-Z][a-zA-Z0-9_]/',$root)){
        $root = 'response';
    }
     $xml = new DOMDocument('1.0','UTF-8');
     $xml->formatOutput = true;
     $response = $xml->createElement($root);
     $xml->appendChild($response);
     foreach($arr as $key=>$value){
         if(is_array($value)){
             $first = $xml->createElement($key);
             _createElement($value,$first,$xml);
         }else{
             $first = $xml->createElement($key,$value);
         }
         $response->appendChild($first);
     }
     return $xml->saveXML();
     //$xml->save('create_xml.xml');
 }
function _createElement($arr,$parentDom,&$xml){
    foreach($arr as $value){
        $list = $xml->createElement('list');
        foreach($value as $k=>$val){
            if(is_array($val)){
                $dom = $xml->createElement($k);
                _createElement($val,$dom, $xml);
            }else{
                $dom = $xml->createElement($k,$val);
            }
            $list->appendChild($dom);
        }
        $parentDom->appendChild($list);
    }
}
?>

可能和你要的结果有偏离

回答(2):

代码有点长,没仔细看。初步发现这句调用有问题:

else {
  arrtoxml($val,$dom,$itemx);
}

应该是:

else {
  arrtoxml($val,$file,$dom,$itemx);
}