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函数,php爱好者站推荐
Mar 19 PHP
在php MYSQL中插入当前时间
Apr 06 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
如何修改和添加Apache的默认站点目录
Jul 05 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
php屏蔽错误及提示的方法
May 10 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单例模式实现(对象只被创建一次)
2012/12/05 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
JS面向对象编程详解
2016/03/06 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
javaScript基础详解
2017/01/19 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
python 性能优化方法小结
2017/03/31 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
详解Python self 参数
2019/08/30 Python
python字符串判断密码强弱
2020/03/18 Python
Python库安装速度过慢解决方案
2020/07/14 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
高中毕业生个人自我鉴定
2013/11/24 职场文书
征兵宣传标语
2014/06/20 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2014年电工工作总结
2014/11/20 职场文书
感谢信模板大全
2015/01/23 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
党支部半年考察意见
2015/06/01 职场文书
交流会主持词
2015/07/02 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫