PHP实现的数组和XML文件相互转换功能示例


Posted in PHP onMarch 15, 2018

本文实例讲述了PHP实现的数组和XML文件相互转换功能。分享给大家供大家参考,具体如下:

最近搞微信支付,微信服务器返回的都是XML文件,所以需要转换成数组,才会便于操作,好了话不多说,直接上代码:

1. XML转数组

/**
 * 将xml转为array
 * @param string  $xml xml字符串或者xml文件名
 * @param bool   $isfile 传入的是否是xml文件名
 * @return array  转换得到的数组
 */
function xmlToArray($xml,$isfile=false){
  //禁止引用外部xml实体
  libxml_disable_entity_loader(true);
  if($isfile){
    if(!file_exists($xml)) return false;
    $xmlstr = file_get_contents($xml);
  }else{
    $xmlstr = $xml;
  }
  $result= json_decode(json_encode(simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
  return $result;
}

用法示例:

$xmlDoc=<<<ETO
<books>
 <book>
 <author>Jack Herrington</author>
 <title>PHP Hacks</title>
 <publisher>O'Reilly</publisher>
 </book>
 <book>
 <author>Jack Herrington</author>
 <title>Podcasting Hacks</title>
 <publisher>O'Reilly</publisher>
 </book>
 <book>
 <author>XML格式化</author>
 <title>三水点靠木在线工具</title>
 <publisher>tools.3water.com</publisher>
 </book>
</books>
ETO;
$relarr=xmlToArray($xmlDoc);
print_r($relarr);

运行结果:

Array
(
  [book] => Array
    (
      [0] => Array
        (
          [author] => Jack Herrington
          [title] => PHP Hacks
          [publisher] => O'Reilly
        )
      [1] => Array
        (
          [author] => Jack Herrington
          [title] => Podcasting Hacks
          [publisher] => O'Reilly
        )
      [2] => Array
        (
          [author] => XML格式化
          [title] => 三水点靠木在线工具
          [publisher] => tools.3water.com
        )
    )
)

2. 数组转XML

/**
 * 数组转xml字符
 * @param string  $xml xml字符串
**/
function arrayToXml($data){
  if(!is_array($data) || count($data) <= 0){
    return false;
  }
  $xml = "<xml>";
  foreach ($data as $key=>$val){
    if (is_numeric($val)){
      $xml.="<".$key.">".$val."</".$key.">";
    }else{
      $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
    }
  }
  $xml.="</xml>";
  return $xml;
}

用法示例:

$arrDoc= array("author"=>"XML格式化","title"=>"三水点靠木在线工具","publisher"=>"tools.3water.com");
$xmlrel=arrayToXml($arrDoc);
//运行结果:<xml><author><![CDATA[XML格式化]]></author><title><![CDATA[三水点靠木在线工具]]></title><publisher><![CDATA[tools.3water.com]]></publisher></xml>
PHP 相关文章推荐
php中长文章分页显示实现代码
Sep 29 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHPCMS2008广告模板SQL注入漏洞修复
Oct 11 PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
解决laravel查询构造器中的别名问题
Oct 17 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 #PHP
laravel框架关于搜索功能的实现
Mar 15 #PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 #PHP
PHP实现生成推广海报的方法详解
Mar 14 #PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 #PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 #PHP
Laravel模型事件的实现原理详解
Mar 14 #PHP
You might like
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python实现批量压缩图片
2018/01/25 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python实现感知器算法(批处理)
2019/01/18 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
人事专员岗位职责
2013/11/20 职场文书
房地产销售经理岗位职责
2014/01/01 职场文书
终止合同协议书范本
2016/03/22 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
Oracle表空间与权限的深入讲解
2021/11/17 Oracle