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更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
php批量上传的实现代码
Jun 09 PHP
解析php常用image图像函数集
Jun 24 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
PHP链表操作简单示例
Oct 15 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
Nov 22 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
详解php反序列化
Jun 10 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开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
php实现rc4加密算法代码
2012/04/25 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
详解angular element()方法使用
2017/04/08 Javascript
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
Python入门教程之运算符与控制流
2016/08/17 Python
python append、extend与insert的区别
2016/10/13 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
计算机专业个人求职自荐信
2013/09/21 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
考试作弊检讨书
2014/10/21 职场文书
2014年新教师工作总结
2014/11/08 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
2015年档案室工作总结
2015/05/23 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书