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 多行多列显示
Aug 15 PHP
php程序之die调试法 快速解决错误
Sep 17 PHP
PHP 飞信好友免费短信API接口开源版
Jul 22 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 PHP
php调整服务器时间的方法
Apr 03 PHP
使用URL传输SESSION信息
Jul 14 PHP
PHP异常处理Exception类
Dec 11 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 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判断用户是否手机访问代码
2015/06/08 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
js实现楼层导航功能
2017/02/23 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
Python 支付整合开发包的实现
2019/01/23 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
django创建简单的页面响应实例教程
2019/09/06 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
大学生毕业的自我评价分享
2014/01/02 职场文书
四年级下册教学反思
2014/02/01 职场文书
参观接待方案
2014/03/17 职场文书
初中学校军训方案
2014/05/09 职场文书
银行金融服务方案
2014/06/11 职场文书
宣传口号大全
2014/06/16 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL