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为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
php在线打包程序源码
Jul 27 PHP
php垃圾代码优化操作代码
Aug 05 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
PHP实现采集抓取淘宝网单个商品信息
Jan 08 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
Jan 25 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
php生成图片缩略图功能示例
Feb 22 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 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
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
python3爬虫之设计签名小程序
2018/06/19 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
简单的Python人脸识别系统
2020/07/14 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
平民服装店创业计划书
2014/01/17 职场文书
校园安全广播稿
2014/02/08 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
英语读书笔记
2015/07/02 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
Python中使用subprocess库创建附加进程
2021/05/11 Python
新手入门Mysql--sql执行过程
2021/06/20 MySQL
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python