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 Smarty生成EXCEL文档的代码
Aug 23 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
php递归json类实例
Dec 02 PHP
php使用curl获取https请求的方法
Feb 11 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 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函数method_exists()与is_callable()的区别
2013/06/21 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
javascript实现时钟动画
2020/12/03 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
python3中zip()函数使用详解
2018/06/29 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
一份Java笔试题
2012/02/21 面试题
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
毕业研究生的自我鉴定
2013/11/30 职场文书
运动会口号16字
2014/06/07 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
教师节感想
2015/08/11 职场文书