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 相关文章推荐
mysql_num_rows VS COUNT 效率问题分析
Apr 23 PHP
解析yii数据库的增删查改
Jun 20 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
PHP四种基本排序算法示例
Apr 09 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 PHP
PHP中FTP相关函数小结
Jul 15 PHP
Yii2中Restful API原理实例分析
Jul 25 PHP
php set_include_path函数设置 include_path 配置选项
Oct 30 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
Mar 02 PHP
PHP 的Opcache加速的使用方法
Dec 29 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导入Excel到MySQL的方法
2011/04/23 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
js 提交和设置表单的值
2008/12/19 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
百度地图api如何使用
2015/08/03 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
解决Python安装后pip不能用的问题
2018/06/12 Python
python 对key为时间的dict排序方法
2018/10/17 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
黄继光的英雄事迹材料
2014/02/13 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
幸福家庭标语
2014/06/27 职场文书
捐款活动总结
2014/08/27 职场文书
营销与策划实训报告
2014/11/05 职场文书
龙猫观后感
2015/06/09 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript