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中使用XML
Oct 09 PHP
透析PHP的配置文件php.ini
Oct 09 PHP
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
php进行ip地址掩码运算处理的方法
Jul 11 PHP
PHP培训要多少钱
Jun 06 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 PHP
PHP命令行与定时任务
Apr 01 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
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
js实现登录验证码
2016/12/22 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
调任通知
2015/04/21 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
培训讲师开场白
2015/06/01 职场文书
教师节班会主持词
2015/07/06 职场文书
交通安全教育主题班会
2015/08/12 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
SQL注入详解及防范方法
2021/12/06 MySQL
python 判断文件或文件夹是否存在
2022/03/18 Python