$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);
}
}
?>
可能和你要的结果有偏离
代码有点长,没仔细看。初步发现这句调用有问题:
else {
arrtoxml($val,$dom,$itemx);
}
应该是:
else {
arrtoxml($val,$file,$dom,$itemx);
}