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调用Oracle存储过程的方法
Sep 12 PHP
PHP实现的sqlite数据库连接类
Dec 12 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
php验证码生成代码
Nov 11 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
PHP-FPM实现性能优化
Mar 31 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
php简单构造json多维数组的方法示例
Jun 08 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
Aug 04 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 PHP
php中错误处理操作实例分析
Aug 23 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的array_multisort()使用方法介绍
2012/05/16 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
Python函数式编程实例详解
2020/01/17 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
施工质量承诺书范文
2014/05/30 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
2014年教研工作总结
2014/12/06 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
Sql Server之数据类型详解
2022/02/28 SQL Server