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循环输出数据库内容的代码
May 24 PHP
完美解决PHP中文乱码
Nov 26 PHP
PHP 页面编码声明方法详解(header或meta)
Mar 12 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
Feb 03 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
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
使用js 设置url参数
2013/07/08 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
python编码最佳实践之总结
2016/02/14 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
如何掌握自荐信格式呢
2013/11/19 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
高中家长寄语
2014/04/02 职场文书
市场营销战略计划书
2014/05/06 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
党员服务承诺书
2014/05/28 职场文书
市场策划求职信
2014/08/07 职场文书
小学领导班子对照材料
2014/08/23 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
师范生见习报告范文
2014/11/03 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
运动员入场前导词
2015/07/20 职场文书
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
Python内置的数据类型及使用方法
2022/04/13 Python