|
php在做后台服务器的时候,经常会遇到这种情况,需要解析来自前台的xml文件,并将数据以xml格式返回,在这种情况下,xml与php中关联数组的转化是非常频繁的事情。比如flex和其他客户端程序与服务器的交互,经常会使用这种方法。下面是我归纳的两个方法,大大简化了xml与数组相互转化的工作量。 代码如下:/** * * 将简单数组转化为简单的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'=>'//www.jb51.cc'), array('conferenceId'=>454,'conferenceTitle'=>'quanshi meetting', array('conferenceId'=>6767, array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu', array('conferenceId'=>8989, array('conferenceId'=>1234343212,'smeAccount'=>'//www.jb51.cc') ) ) ); 转化为: aaron 192.168.0.12 1212 quanshi 444 //www.jb51.cc 454 quanshi meetting //www.jb51.cc 6767 quanshi meetting //www.jb51.cc 232323 quanshi uuu //www.jb51.cc 8989 quanshi meetting //www.jb51.cc 1234343212 quanshi meetting //www.jb51.cc */ 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 代码如下:/** * * 将简单的xml转化成关联数组 * @param string $xmlString xml字符串 * @example *
IT交流会 2011-12-19 12:00:00 andy1111111 192.168.1.56 120 1
被邀请人1的RTX账号 被邀请人1电话号码
被邀请人2的RTX账号 被邀请人2电话号码
转化之后的关联数组: 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;}
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|