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学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
php addslashes 函数详细分析说明
Jun 23 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
PHP的几个常用加密函数
Feb 03 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 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中的数组操作函数整理
2008/08/18 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
javascript打印输出json实例
2013/11/11 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
如何运行带参数的python脚本
2019/11/15 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
python简单实现最大似然估计&amp;scipy库的使用详解
2020/04/15 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
金讯Java笔试题目
2013/06/18 面试题
年终自我鉴定
2013/10/09 职场文书
车间班长岗位职责
2013/11/30 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
周年庆促销方案
2014/03/15 职场文书
大学生就业求职信
2014/06/12 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
单位实习鉴定评语
2015/01/04 职场文书
工作经历证明范本
2015/06/15 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
vue使用echarts实现折线图
2022/03/21 Vue.js