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 fsockopen写的HTTP下载的类
Feb 22 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
php使浏览器直接下载pdf文件的方法
Nov 15 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
php实现网页缓存的工具类分享
Jul 14 PHP
php实现zip文件解压操作
Nov 03 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
Dec 22 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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类的特性实例分析
2016/09/28 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
JSON 学习之完全手册 图文
2007/05/29 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
Python中的map、reduce和filter浅析
2014/04/26 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
django项目搭建与Session使用详解
2018/10/10 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
马来西亚网上购物:Youbeli
2018/03/30 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
药品促销活动方案
2014/02/14 职场文书
期末评语大全
2014/05/04 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android