之前写的php生成xml的内容还不够全面,现在补充一个自己写的php多维数组转xml的小例子,当然还不够全面,大家可根据需求做相应调整直接上代码:
<?php
$doc = new DOMDocument('1.0','utf-8');//声明版本和编码
$doc -> formatOutput = true;//格式xml输出 有换行什么的
$root = $doc -> createElement('root');//加根标签
//随便定一个数组
$variable=array(
'0'=>array(
'0'=>array(
'id'=>'18',
'name'=>'keke',
'address'=>'江西',
'age'=>'26',
'sex'=>'男'
),
'1'=>array(
'id'=>'19',
'name'=>'kehh',
'address'=>'湖南',
'age'=>'27',
'sex'=>'女'
),
'2'=>array(
'id'=>'15',
'name'=>'xiaoming',
'address'=>'湖北',
'age'=>'25',
'sex'=>'男'
)
),
'1'=>array(
'0'=>array(
'id'=>'66',
'name'=>'DDD',
'address'=>'江西',
'age'=>'26',
'sex'=>'男'
),
'1'=>array(
'id'=>'99',
'name'=>'SFSDF',
'address'=>'湖南',
'age'=>'27',
'sex'=>'女'
),
'2'=>array(
'id'=>'77',
'name'=>'VBCX',
'address'=>'湖北',
'age'=>'25',
'sex'=>'男'
)
)
);
//核心代码,此处把数据直接属性名,属性值放到标签内,如需
//把内容放在标签中间也是一样设置,可看我上一篇
foreach ($variable as $key => $value) { //循环第一层标签
$goods[$key] = $doc -> createElement('Goods'); //创建第一层标签名字随便取的
foreach($value as $k=>$v){ //循环第二层
$rule[$k] = $doc->createElement('Rule');//创建第二层标签
$goods[$key]->appendChild($rule[$k]);//把第二层标签添加到第一层
foreach($v as $mm=>$vv) { //循环第三层
$IE[$mm] = $doc->createElement('IE');//创建第三层标签
$rule[$k]->appendChild($IE[$mm]);//把第三层标签添加到第二层
$attr[$mm] = $doc->createAttribute($mm);//创建第三层标签的属性
$con[$mm] = $doc->createTextNode($vv);//创建第三层标签的属性内容
$attr[$mm]->appendChild($con[$mm]); //把第三层标签的属性内容赋给属性
$IE[$mm]->appendChild($attr[$mm]); //把第三层标签属性添加的对应的第三层标签
}
}
$root -> appendChild($goods[$key]);//把goods层添加到根标签
}
$doc -> appendChild($root);//把root标签作为根标签
$doc -> save('xml/001.xml');//保存生成xml文件
$time = date('Y-m-d H:i:s',time());
echo $doc?'成功'.$time:'失败'.$time;
效果:
<?xml version="1.0" encoding="utf-8"?>
网友评论