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+mysql注射语句构造
Oct 30 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
PHP基础知识介绍
Sep 17 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
php遍历树的常用方法汇总
Jun 18 PHP
php使用MySQL保存session会话的方法
Jun 26 PHP
yii2中的rules 自定义验证规则详解
Apr 19 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
Yii2框架自定义验证规则操作示例
Feb 08 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
python学习入门细节知识点
2018/03/29 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
python多线程与多进程及其区别详解
2019/08/08 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
会计学习心得体会
2014/09/09 职场文书
统计员岗位职责
2015/02/11 职场文书
民主生活会意见
2015/06/05 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL