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 相关文章推荐
Zend framework处理一个http请求的流程分析
Feb 08 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
PHP简洁函数小结
Aug 12 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
php 使用 __call实现重载功能示例
Nov 18 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
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
php中数组最简单的使用方法
2020/12/27 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
Python list操作用法总结
2015/11/10 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
python openssl模块安装及用法
2020/12/06 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
JAVA程序员自荐书
2014/01/30 职场文书
会计专业自我鉴定
2014/02/10 职场文书
租赁协议书范本
2014/04/22 职场文书
大学生演讲稿
2014/04/25 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
教你怎么用Python生成九宫格照片
2021/05/20 Python
python 常用的异步框架汇总整理
2021/06/18 Python
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android