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 获取可变函数参数的函数
Aug 26 PHP
php 文件上传代码(限制jpg文件)
Jan 05 PHP
php实现httpclient类示例
Apr 08 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
PHP常用编译参数中文说明
Sep 27 PHP
Yii框架登录流程分析
Dec 03 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
Feb 01 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
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处理换行符的问题 \r\n
2013/06/13 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
jQuery获取动态生成的元素示例
2014/06/15 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
使用Django和Python创建Json response的方法
2018/03/26 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
python多线程http压力测试脚本
2019/06/25 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Python如何根据时间序列数据作图
2020/05/12 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
linux面试题参考答案(9)
2015/01/07 面试题
女娲补天教学反思
2014/02/05 职场文书
音乐教育感言
2014/03/05 职场文书
商业融资计划书
2014/04/29 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL