XML转数组

来源:互联网 发布:淘宝刷单怎么做 编辑:程序博客网 时间:2024/04/29 21:06


http://blog.csdn.net/baochao95/article/details/52737631


转换代码:

<?php/** * XML转换成数组 * @author webbc */function xml2arr($simxml){    $simxml = (array)$simxml;//强转    foreach($simxml as $k => $v){        if(is_array($v) || is_object($v)){            $simxml[$k] = xml2arr($v);        }    }    return $simxml;    }$simxml = simplexml_load_file('./06.xml');//这个对象中既有数组,又有对象,使用起来不怎么方便,可以尝试将这个对象转换成数组//print_r($simxml);print_r(xml2arr($simxml));?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

06.xml文件:

这里写图片描述

转换前: 
这个对象中既有数组,数组中又包含了对象

这里写图片描述

转换后: 
将这个对象中的所有对象全转换成数组

这里写图片描述

2、数组转换为XML

(1)一维数组转换为XML数据

代码:

<?php/** * 一维数组转xml * @author webbc */$arr = array(    'name' => 'webbc',    'age' => '22',);//要转换的数组//转换函数function arr2xml($arr){    $simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');//创建simplexml对象    //遍历数组,循环添加到root节点中    foreach($arr as $k=>$v){        $simxml->addChild($k,$v);    }    //返回xml数据    header('Content-type:text/xml;charset=utf-8');    return $simxml->saveXML();}echo arr2xml($arr);//输出到浏览器?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

输出结果:

这里写图片描述

(2)多维数据转换为XML

代码:

<?php/** * 多维数组转xml * @author webbc */$arr = array(    'name' => 'webbc',    'age' => '22',    'job' => array(        'title' => '销售经理',        'salary' => '12K',        'team' => array('小明','小华','小林')    ));//要转换的多维数组信息//转换函数function arr2xml($arr,$parentNode=null){    //如果父节点为null,则创建root节点,否则就使用父节点    if($parentNode === null){        $simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');    }else{        $simxml = $parentNode;    }    //遍历数组    foreach($arr as $k=>$v){        if(is_array($v)){//如果是数组的话则继续递归调用,并以该键值创建父节点            arr2xml($v,$simxml->addChild($k));        }else if(is_numeric($k)){//如果键值是数字,不能使用纯数字作为XML的标签名,所以此处加了'item'字符,这个字符可以自定义            $simxml->addChild('item'.$k,$v);        }else{//添加节点            $simxml->addChild($k,$v);        }    }    //返回数据    header('Content-type:text/xml;charset=utf-8');    return $simxml->saveXML();}echo arr2xml($arr);//输出?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

输出结果:

这里写图片描述

注意:纯数字不能作为xml的标签名,所以如果遇到索引数组,就必须使用字符来创建xml标签!


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 暑假 开学 春季开学 开学第一讲 校长开学 学校开学时间 开学报名时间 关于开学的作文 关于开学的资料 关于开学的黑板报 关于开学的广播稿 开学啦 开学啦黑板报 幼儿园开学啦主题图片 开学啦简笔画图片 开学啦黑板报内容 幼儿园开学啦 开学啦朋友圈配图 开学啦图片 开学啦手抄报 小学开学啦 绘画开学啦 大学开学啦 家长开学啦 开学季 九月开学季的优美语句 开学季语录 开学季的优美语录 开学季活动 开学季手抄报简单又漂亮 开学季图片 入学季 开学季活动主题 开学季海报 我在长安开客栈 混迹江湖开客栈 我在阴间开客栈 丽江开客栈 我和明星开客栈 洱海开客栈多少钱 如何开民宿客栈 我在长安开客栈下载