源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

探讨:array2xml和xml2array以及xml与array的互相转化

  • 时间:2020-07-06 05:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:探讨:array2xml和xml2array以及xml与array的互相转化
php在做后台服务器的时候,经常会遇到这种情况,需要解析来自前台的xml文件,并将数据以xml格式返回,在这种情况下,xml与php中关联数组的转化是非常频繁的事情。比如flex和其他客户端程序与服务器的交互,经常会使用这种方法。下面是我归纳的两个方法,大大简化了xml与数组相互转化的工作量。
[u]复制代码[/u] 代码如下:
/**      *      * 将简单数组转化为简单的xml      * @param string $data  要进行转化的数组      * @param string $tag   要使用的标签      * @example      * $arr = array(         'rtxAccount'=>'aaron','ipAddr'=>'192.168.0.12',         'conferenceList'=>array('conference'=>                             array(                                 array('conferenceId'=>1212,'conferenceTitle'=>'quanshi 444','smeAccount'=>'http://www.1sucai.cn'),                                 array('conferenceId'=>454,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.1sucai.cn'),                                 array('conferenceId'=>6767,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.1sucai.cn'),                                 array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'http://www.1sucai.cn'),                                 array('conferenceId'=>8989,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.1sucai.cn'),                                 array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.1sucai.cn')                                 )                             )         );         转化为:         <rtxAccount>aaron</rtxAccount>         <ipAddr>192.168.0.12</ipAddr>         <conferenceList>             <conference>                 <conferenceId>1212</conferenceId>                 <conferenceTitle>quanshi 444</conferenceTitle>                 <smeAccount>http://www.1sucai.cn</smeAccount>             </conference>             <conference>                 <conferenceId>454</conferenceId>                 <conferenceTitle>quanshi meetting</conferenceTitle>                 <smeAccount>http://www.1sucai.cn</smeAccount>             </conference>             <conference>                 <conferenceId>6767</conferenceId>                 <conferenceTitle>quanshi meetting</conferenceTitle>                 <smeAccount>http://www.1sucai.cn</smeAccount>             </conference>             <conference>                 <conferenceId>232323</conferenceId>                 <conferenceTitle>quanshi uuu</conferenceTitle>                 <smeAccount>http://www.1sucai.cn</smeAccount>             </conference>             <conference>                 <conferenceId>8989</conferenceId>                 <conferenceTitle>quanshi meetting</conferenceTitle>                 <smeAccount>http://www.1sucai.cn</smeAccount>             </conference>             <conference>                 <conferenceId>1234343212</conferenceId>                 <conferenceTitle>quanshi meetting</conferenceTitle>                 <smeAccount>http://www.1sucai.cn</smeAccount>             </conference>         </conferenceList>      */     function array2xml($data,$tag = '')     {         $xml = '';         foreach($data as $key => $value)         {             if(is_numeric($key))             {                 if(is_array($value))                 {                     $xml .= "<$tag>";                     $xml .= array2xml($value);                     $xml .="</$tag>";                 }                 else                 {                     $xml .= "<$tag>$value</$tag>";                 }                }             else             {                 if(is_array($value))                 {                     $keys = array_keys($value);                     if(is_numeric($keys[0]))                     {                         $xml .=array2xml($value,$key);                     }                     else                     {                         $xml .= "<$key>";                         $xml .=array2xml($value);                         $xml .= "</$key>";                     }                 }                 else                 {                     $xml .= "<$key>$value</$key>";                 }             }         }         return $xml;     }             }
xml2array
[u]复制代码[/u] 代码如下:
/**   *   * 将简单的xml转化成关联数组   * @param string $xmlString  xml字符串   * @example   * <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RTXConferenceReqDTO>  <conferenceTitle>IT交流会</conferenceTitle>  <startTime>2011-12-19 12:00:00</startTime>  <rtxAccount>andy1111111</rtxAccount>  <ipAddr>192.168.1.56</ipAddr>  <duration>120</duration>  <conferenceType>1</conferenceType>  <invitees>   <invitee>    <rtxAccount>被邀请人1的RTX账号</rtxAccount>    <tel>被邀请人1电话号码</tel>   </invitee>   <invitee>    <rtxAccount>被邀请人2的RTX账号</rtxAccount>    <tel>被邀请人2电话号码</tel>   </invitee>  </invitees> </RTXConferenceReqDTO> 转化之后的关联数组: Array (     [conferenceTitle] => IT交流会     [startTime] => 2011-12-19 12:00:00     [rtxAccount] => andy1111111     [ipAddr] => 192.168.1.56     [duration] => 120     [conferenceType] => 1     [invitees] => Array         (             [invitee] => Array                 (                     [0] => Array                         (                             [rtxAccount] => 被邀请人1的RTX账号                             [tel] => 被邀请人1电话号码                         )                     [1] => Array                         (                             [rtxAccount] => 被邀请人2的RTX账号                             [tel] => 被邀请人2电话号码                         )                 )         ) )   */  function xml2array($xmlString = '')  {   $targetArray = array();   $xmlObject = simplexml_load_string($xmlString);   $mixArray = (array)$xmlObject;   foreach($mixArray as $key => $value)   {    if(is_string($value))    {     $targetArray[$key] = $value;    }    if(is_object($value))    {     $targetArray[$key] = xml2array($value->asXML());    }    if(is_array($value))    {     foreach($value as $zkey => $zvalue)     {      if(is_numeric($zkey))      {       $targetArray[$key][] = xml2array($zvalue->asXML());      }      if(is_string($zkey))      {       $targetArray[$key][$zkey] = xml2array($zvalue->asXML());      }     }    }   }   return $targetArray;  }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部