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'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>454,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>6767,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>8989,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com') ) ) ); 转化为: <rtxAccount>aaron</rtxAccount> <ipAddr>192.168.0.12</ipAddr> <conferenceList> <conference> <conferenceId>1212</conferenceId> <conferenceTitle>quanshi 444</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>454</conferenceId> <conferenceTitle>quanshi meetting</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>6767</conferenceId> <conferenceTitle>quanshi meetting</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>232323</conferenceId> <conferenceTitle>quanshi uuu</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>8989</conferenceId> <conferenceTitle>quanshi meetting</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>1234343212</conferenceId> <conferenceTitle>quanshi meetting</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</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