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 相关文章推荐
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
PHP数据类型的总结分析
Jun 13 PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 PHP
ThinkPHP中的关联模型注意点
Jun 16 PHP
推荐十款免费 WordPress 插件
Mar 24 PHP
关于PHP开发的9条建议
Jul 27 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
Yii2中Restful API原理实例分析
Jul 25 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 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排序算法的复习和总结
2012/02/15 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Python实现k-means算法
2018/02/23 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
通信工程专业毕业生推荐信
2013/12/25 职场文书
函授药学自我鉴定
2014/02/07 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
语文教学随笔感言
2014/02/18 职场文书
企业宣传口号
2014/06/12 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
Java spring单点登录系统
2021/09/04 Java/Android