PHP处理数组和XML之间的互相转换


Posted in PHP onJune 02, 2016

在开发中,我们经常会遇到数组与XML之间的互相转换,尤其在处理接口开发的时候经常用到,比如对方客户端POST一个XML格式的数据到服务器上,服务器上的程序要负责接收解析,还有需要将数据表数据以XML格式提供给第三方等等应用。
本文我们将简单介绍如何使用PHP处理数组和XML之间的互相转换。

源码下载:PHP数组与XML之间的转换

PHP将数组转换成XML
 PHP可以将数组转换成xml格式,简单的办法是遍历数组,然后将数组的key/value转换成xml节点,再直接echo输出了,如:

function arrayToXml($arr){ 
$xml = "<root>"; 
foreach ($arr as $key=>$val){ 
if(is_array($val)){ 
$xml.="<".$key.">".arrayToXml($val)."</".$key.">"; 
}else{ 
$xml.="<".$key.">".$val."</".$key.">"; 
} 
} 
$xml.="</root>"; 
return $xml; 
}

我测试了下,这个最简单,速度又快,支持多为数组,中文也不会乱码。
 另一种方法是利用DOMDocument来生成xml结构:

function arrayToXml($arr,$dom=0,$item=0){ 
if (!$dom){ 
$dom = new DOMDocument("1.0"); 
} 
if(!$item){ 
$item = $dom->createElement("root"); 
$dom->appendChild($item); 
} 
foreach ($arr as $key=>$val){ 
$itemx = $dom->createElement(is_string($key)?$key:"item"); 
$item->appendChild($itemx); 
if (!is_array($val)){ 
$text = $dom->createTextNode($val); 
$itemx->appendChild($text); 

}else { 
arrayToXml($val,$dom,$itemx); 
} 
} 
return $dom->saveXML(); 
}

它同样可以将数组转换成xml,而且支持多维数组,生成的xml中文也不会乱码。

PHP将XML转换成数组
 
做接口开发的时候经常会碰到别人提交给你的是xml格式的数据,常见的微信接口、支付宝接口等,他们的接口如发送消息通信都是xml格式的,那么我们先想办法拿到这个xml数据,然后再将其转化成数组。
 假设我们获取到一个这样的XML:

<root> 

<user>

月光光abcd</user> 

<pvs>13002</pvs>

 <ips> 

<baidu_ip>1200</baidu_ip>

 <google_ip>1829</google_ip>

 </ips> 

<date>2016-06-01</date>

 </root>

通过simplexml_load_string()解析读取xml数据,然后先转成json格式,再转换成数组。

function xmlToArray($xml){ 

 //禁止引用外部xml实体 

libxml_disable_entity_loader(true); 

$xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); 

$val = json_decode(json_encode($xmlstring),true); 

return $val; 

}

调用xmlToArray()可得到以下结果:

PHP处理数组和XML之间的互相转换 

得到数组后,我们就可以对数据进行各种处理了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP4实际应用经验篇(2)
Oct 09 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php简单的会话类代码
Aug 08 PHP
深入Nginx + PHP 缓存详解
Jul 11 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
一组PHP加密解密函数分享
Jun 05 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
May 02 PHP
PHP邮箱验证示例教程
Jun 01 #PHP
PHP微信公众号自动发送红包API
Jun 01 #PHP
PHP模块化安装教程
Jun 01 #PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 #PHP
基于PHP生成简单的验证码
Jun 01 #PHP
深入理解PHP原理之执行周期分析
Jun 01 #PHP
深入理解PHP之OpCode原理详解
Jun 01 #PHP
You might like
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php常用数学函数汇总
2014/11/21 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
JavaScript 事件参考手册
2008/12/24 Javascript
动态为事件添加js代码示例
2009/02/15 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
介绍Ibatis的核心类
2013/11/18 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
经理助理岗位职责
2014/03/05 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
万里长城导游词
2015/01/30 职场文书
保研推荐信范文
2015/03/25 职场文书
美丽的大脚观后感
2015/06/03 职场文书