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文件
Jan 04 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
在PHP中使用redis
Nov 04 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
解决cPanel无法安装php5.2.17
Jun 22 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
Laravel手动返回错误码示例
Oct 22 PHP
PHP Trait功能与用法实例分析
Jun 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
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jQuery操作Select的Option上下移动及移除添加等等
2013/11/18 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
python爬取网站数据保存使用的方法
2013/11/20 Python
Python实现购物程序思路及代码
2017/07/24 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
教师演讲稿范文
2014/01/08 职场文书
社区活动邀请函范文
2014/01/29 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
政府个人对照检查材料
2014/08/28 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers