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实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
PHP 面向对象 final类与final方法
May 05 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
linux iconv方法的使用
Oct 01 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
PHP 观察者模式的实现代码
May 10 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 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 Undefined index报错的修复方法
2011/07/17 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
深入理解javascript作用域和闭包
2014/09/23 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
angularJS 入门基础
2015/02/09 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Numpy之random函数使用学习
2019/01/29 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
南威尔士家居商店:Leekes
2016/10/25 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
法人委托书
2014/07/31 职场文书
钳工实训报告总结
2014/11/04 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
重阳节主题班会
2015/08/17 职场文书
上级领导检查欢迎词
2015/09/30 职场文书