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
php+mysql事务rollback&amp;commit示例
Feb 08 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
php自定义分页类完整实例
Dec 25 PHP
详解php中反射的应用
Mar 15 PHP
PHP书写格式详解(必看)
May 23 PHP
PHP调用全国天气预报数据接口查询天气示例
Feb 20 PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 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中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
QUnit jQuery的TDD框架
2010/11/04 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
python解析xml模块封装代码
2014/02/07 Python
在Python下尝试多线程编程
2015/04/28 Python
如何在python中使用selenium的示例
2017/12/26 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
如何用Python合并lmdb文件
2018/07/02 Python
django做form表单的数据验证过程详解
2019/07/26 Python
使用K.function()调试keras操作
2020/06/17 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
商务日语专业自荐信
2014/04/17 职场文书
经费申请报告范文
2015/05/18 职场文书
化验室安全管理制度
2015/08/06 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
一篇文章学会Vue中间件管道
2021/06/20 Vue.js
Python中的datetime包与time包包和模块详情
2022/02/28 Python
Hive常用日期格式转换语法
2022/06/25 数据库