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之第七天
Oct 09 PHP
PHP学习笔记之二
Jan 17 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 PHP
微信公众平台天气预报功能开发
Jul 06 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 22 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
php强制运行广告的方法
2014/12/01 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python运行其他程序的实现方法
2017/07/14 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
python爬取招聘要求等信息实例
2020/11/20 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
一套Delphi的笔试题一
2016/02/14 面试题
结婚喜宴主持词
2014/03/14 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
工地安全标语
2014/06/07 职场文书
英语教师求职信范文
2015/03/20 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
爱心捐书倡议书
2015/04/27 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
详解Python牛顿插值法
2021/05/11 Python