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中上传大体积文件时需要的设置
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
PHP入门学习的几个不错的实例代码
Jul 13 PHP
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
php抽象类用法实例分析
Jul 07 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
php unlink()函数使用教程
Jul 12 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 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 MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
Python 除法小技巧
2008/09/06 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
优秀女职工事迹材料
2014/02/06 职场文书
教师师德反思材料
2014/02/15 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
学习计划是什么
2019/04/30 职场文书
Golang表示枚举类型的详细讲解
2021/09/04 Golang
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
python处理json数据文件
2022/04/11 Python
Fluentd搭建日志收集服务
2022/09/23 Servers