当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现的数组和XML文件相互转换功能示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-05 14:34:16 浏览: 评论:0 

这篇文章主要介绍了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

用法示例:

  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.   [book] => Array 
  3.     ( 
  4.       [0] => Array 
  5.         ( 
  6.           [author] => Jack Herrington 
  7.           [title] => PHP Hacks 
  8.           [publisher] => O'Reilly 
  9.         ) 
  10.       [1] => Array 
  11.         ( 
  12.           [author] => Jack Herrington 
  13.           [title] => Podcasting Hacks 
  14.           [publisher] => O'Reilly 
  15.         ) 
  16.       [2] => Array 
  17.         ( 
  18.           [author] => XML格式化 
  19.           [title] => php粉丝网 
  20.           [publisher] => www.phpfensi.com 
  21.         ) 
  22.     ) 

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

用法示例:

  1. $arrDocarray("author"=>"XML格式化","title"=>"php粉丝网","publisher"=>"www.phpfensi.com"); 
  2. $xmlrel=arrayToXml($arrDoc); 
  3. //运行结果:<xml><author><![CDATA[XML格式化]]></author><title><![CDATA[脚本之家在线工具]]></title><publisher><![CDATA[tools.jb51.net]]></publisher></xml>

Tags: PHP数组XML

分享到: