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操作的在线工具供大家参考使用:
在线