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动态变静态原理
Nov 25 PHP
PHP 一个比较完善的简单文件上传
Mar 25 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
php实现购物车功能(上)
Jul 23 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
PHP中number_format()函数的用法讲解
Apr 08 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上传文件中文文件名乱码的解决方法
2013/11/01 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中优化NumPy包使用性能的教程
2015/04/23 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
Python urllib3软件包的使用说明
2020/11/18 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
十八大宣传标语
2014/10/09 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
恰同学少年观后感
2015/06/08 职场文书
小学信息技术教学反思
2016/02/16 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书