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生成静态文件的多种方法分享
Jul 17 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
php解析url的三个示例
Jan 20 PHP
YII中assets的使用示例
Jul 31 PHP
php导出CSV抽象类实例
Sep 24 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
php查询及多条件查询
Feb 26 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 PHP
PHP二维数组分页2种实现方法解析
Jul 09 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 缓存函数代码
2008/08/27 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
详解如何在Vue里建立长按指令
2018/08/20 Javascript
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
python自动化生成IOS的图标
2018/11/13 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
OpenCV 边缘检测
2019/07/10 Python
python单例设计模式实现解析
2020/01/07 Python
Python logging模块原理解析及应用
2020/08/13 Python
Python 创建守护进程的示例
2020/09/29 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
文员个人求职自荐信
2013/09/21 职场文书
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
个人租房协议书
2014/11/28 职场文书
公司联欢会主持词
2015/07/04 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android
java如何实现socket连接方法封装
2021/09/25 Java/Android