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 23 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
支持中文的php加密解密类代码
Nov 27 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php的sso单点登录实现方法
Jan 08 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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
adodb与adodb_lite之比较
2006/12/31 PHP
完美解决PHP中文乱码
2009/11/26 PHP
PHP微信分享开发详解
2017/01/14 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
javascript call方法使用说明
2010/01/11 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
javascript中clone对象详解
2014/12/03 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
详解js的视频和音频采集
2018/08/09 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
python生成n个元素的全组合方法
2018/11/13 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
python实现TCP文件传输
2020/03/20 Python
django 实现简单的插入视频
2020/04/07 Python
python中append函数用法讲解
2020/12/11 Python
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
个人实用的自我评价范文
2013/11/23 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
教你nginx跳转配置的四种方式
2022/07/07 Servers