PHP实现的数组和XML文件相互转换功能示例
本文实例讲述了PHP实现的数组和XML文件相互转换功能。分享给大家供大家参考,具体如下:
最近搞微信支付,微信服务器返回的都是XML文件,所以需要转换成数组,才会便于操作,好了话不多说,直接上代码:
1.XML转数组
/** *将xml转为array *@paramstring$xmlxml字符串或者xml文件名 *@parambool$isfile传入的是否是xml文件名 *@returnarray转换得到的数组 */ functionxmlToArray($xml,$isfile=false){ //禁止引用外部xml实体 libxml_disable_entity_loader(true); if($isfile){ if(!file_exists($xml))returnfalse; $xmlstr=file_get_contents($xml); }else{ $xmlstr=$xml; } $result=json_decode(json_encode(simplexml_load_string($xmlstr,'SimpleXMLElement',LIBXML_NOCDATA)),true); return$result; }
用法示例:
$xmlDoc=<<JackHerrington PHPHacks O'Reilly JackHerrington PodcastingHacks O'Reilly ETO; $relarr=xmlToArray($xmlDoc); print_r($relarr); XML格式化 毛票票在线工具 tools.jb51.net
运行结果:
Array ( [book]=>Array ( [0]=>Array ( [author]=>JackHerrington [title]=>PHPHacks [publisher]=>O'Reilly ) [1]=>Array ( [author]=>JackHerrington [title]=>PodcastingHacks [publisher]=>O'Reilly ) [2]=>Array ( [author]=>XML格式化 [title]=>毛票票在线工具 [publisher]=>tools.jb51.net ) ) )
2.数组转XML
/** *数组转xml字符 *@paramstring$xmlxml字符串 **/ functionarrayToXml($data){ if(!is_array($data)||count($data)<=0){ returnfalse; } $xml=""; foreach($dataas$key=>$val){ if(is_numeric($val)){ $xml.="<".$key.">".$val."".$key.">"; }else{ $xml.="<".$key.">".$key.">"; } } $xml.=" "; return$xml; }
用法示例:
$arrDoc=array("author"=>"XML格式化","title"=>"毛票票在线工具","publisher"=>"tools.jb51.net"); $xmlrel=arrayToXml($arrDoc); //运行结果:
PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线