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 相关文章推荐
基于文本的搜索
Oct 09 PHP
Windows下的PHP5.0详解
Nov 18 PHP
php 数组的一个悲剧?
May 11 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
php中如何执行linux命令详解
Nov 06 PHP
PHP智能识别收货地址信息实例
Jan 05 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 判断变量类型实现代码
2009/10/23 PHP
php 高效率写法 推荐
2010/02/21 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
AngularJS内置指令
2015/02/04 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
javascript常用的设计模式
2017/02/09 Javascript
值得收藏的vuejs安装教程
2017/11/21 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python yield与实现方法代码分析
2018/02/06 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
在职研究生自我鉴定
2013/10/16 职场文书
经销商培训邀请函
2014/01/21 职场文书
写给女朋友的检讨书
2014/01/28 职场文书
努力学习演讲稿
2014/05/10 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL