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 相关文章推荐
mac下使用brew配置环境的步骤分享
May 23 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
php中DOMElement操作xml文档实例演示
Mar 26 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
codeigniter数据库操作函数汇总
Jun 12 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
laravel中命名路由的使用方法
Feb 24 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
批量实现面向对象的实例代码
2013/07/01 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
在Python中操作字典之update()方法的使用
2015/05/22 Python
Python导入oracle数据的方法
2015/07/10 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python实现的特征提取操作示例
2018/12/03 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
python opencv实现图像配准与比较
2021/02/09 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
求职信怎么写
2014/05/23 职场文书
作风大整顿心得体会
2014/09/10 职场文书
幼儿园开学通知
2015/04/24 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
宣传委员竞选稿
2015/11/19 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书