这篇文章主要介绍了PHP实现的数组和XML文件相互转换功能,结合实例形式分析了php针对xml格式数据与数组相互转换操作技巧,需要的朋友可以参考下

本文实例讲述了PHP实现的数组和XML文件相互转换功能。分享给大家供大家参考,具体如下:

最近搞微信支付,微信服务器返回的都是XML文件,所以需要转换成数组,才会便于操作,好了话不多说,直接上代码:

  1. XML转数组
    1. /**
    2. * 将xml转为array
    3. * @param string $xml xml字符串或者xml文件名
    4. * @param bool $isfile 传入的是否是xml文件名
    5. * @return array 转换得到的数组
    6. */
    7. function xmlToArray($xml,$isfile=false){
    8. //禁止引用外部xml实体
    9. libxml_disable_entity_loader(true);
    10. if($isfile){
    11. if(!file_exists($xml)) return false;
    12. $xmlstr = file_get_contents($xml);
    13. }else{
    14. $xmlstr = $xml;
    15. }
    16. $result= json_decode(json_encode(simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
    17. return $result;
    18. }
    用法示例:
    1. $xmlDoc=<<<ETO
    2. <books>
    3. <book>
    4. <author>Jack Herrington</author>
    5. <title>PHP Hacks</title>
    6. <publisher>O'Reilly</publisher>
    7. </book>
    8. <book>
    9. <author>Jack Herrington</author>
    10. <title>Podcasting Hacks</title>
    11. <publisher>O'Reilly</publisher>
    12. </book>
    13. <book>
    14. <author>XML格式化</author>
    15. <title>脚本之家在线工具</title>
    16. <publisher>tools.jb51.net</publisher>
    17. </book>
    18. </books>
    19. ETO;
    20. $relarr=xmlToArray($xmlDoc);
    21. print_r($relarr);
    运行结果:
    1. Array
    2. (
    3. [book] => Array
    4. (
    5. [0] => Array
    6. (
    7. [author] => Jack Herrington
    8. [title] => PHP Hacks
    9. [publisher] => O'Reilly
    10. )
    11. [1] => Array
    12. (
    13. [author] => Jack Herrington
    14. [title] => Podcasting Hacks
    15. [publisher] => O'Reilly
    16. )
    17. [2] => Array
    18. (
    19. [author] => XML格式化
    20. [title] => 脚本之家在线工具
    21. [publisher] => tools.jb51.net
    22. )
    23. )
    24. )
  2. 数组转XML
    1. /**
    2. * 数组转xml字符
    3. * @param string $xml xml字符串
    4. **/
    5. function arrayToXml($data){
    6. if(!is_array($data) || count($data) <= 0){
    7. return false;
    8. }
    9. $xml = "<xml>";
    10. foreach ($data as $key=>$val){
    11. if (is_numeric($val)){
    12. $xml.="<".$key.">".$val."</".$key.">";
    13. }else{
    14. $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
    15. }
    16. }
    17. $xml.="</xml>";
    18. return $xml;
    19. }
    用法示例:
    1. $arrDoc= array("author"=>"XML格式化","title"=>"脚本之家在线工具","publisher"=>"tools.jb51.net");
    2. $xmlrel=arrayToXml($arrDoc);
    3. //运行结果:<xml><author><![CDATA[XML格式化]]></author><title><![CDATA[脚本之家在线工具]]></title><publisher><![CDATA[tools.jb51.net]]></publisher></xml>

更多相关文章

  1. android独有的省内存的轻量级容器类
  2. Android(安卓)4.0 开发者指南(27) —— Resource Types - String
  3. linux文本处理三剑客之awk
  4. 解决Laravel5.5下的toArray问题
  5. JavaScript 字符串常用方法和数组api
  6. 字符串api和数组api及遍历
  7. 字符串api和数组api及遍历
  8. 字符串和数组遍历
  9. 字符串和数组常用API

随机推荐

  1. mysql 的一点点记录
  2. 对于有3亿多万条记录的MySQL表,有哪些优化
  3. centos7 移动mysql5.7.19 数据存储位置
  4. MySQL5 LOAD DATA 的使用
  5. 【数据库管理工具】Navicat安装及使用教
  6. 电商平台的搭建(SpringMVC+SpringSecurity
  7. mysql数据库100万条数据插入采用jdbc的各
  8. MySQL内核解析:Innodb页面存储结构-1
  9. 在分组之前使用orderby来自两个不同的表
  10. MySQL中一些查看事务和锁情况的常用语句