php多维数组转xml

2018-12-08  本文已影响0人  我的楼兰0909
之前写的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"?>
上一篇下一篇

猜你喜欢

热点阅读