在開發中,我們經常會遇到數組與xml之間的互相轉換,尤其在處理接口開發的時候經常用到,比如對方客戶端post一個xml格式的數據到服務器上,服務器上的程序要負責接收解析,還有需要將數據表數據以xml格式提供給第三方等等應用。
本文我們將簡單介紹如何使用php處理數組和xml之間的互相轉換。
PHP將數組轉換成XML
?PHP可以將數組轉換成xml格式,簡單的辦法是遍歷數組,然后將數組的key/value轉換成xml節點,再直接echo輸出了,如:
function?arrayToXml($arr){? $xml?=?"<root>";? foreach?($arr?as?$key=>$val){? if(is_array($val)){? $xml.="".arrayToXml($val)."".$key.">";? }else{? $xml.="".$val."".$key.">";? }? }? $xml.="</root>";? return?$xml;? }
我測試了下,這個最簡單,速度又快,支持多為數組,中文也不會亂碼。
?另一種方法是利用DOM遍歷數組來生成xml結構:
function?arrayToXml($arr,$dom=0,$item=0){? if?(!$dom){? $dom?=?new?DOMDocument("1.0");? }? if(!$item){? $item?=?$dom->createElement("root");? $dom->appendChild($item);? }? foreach?($arr?as?$key=>$val){? $itemx?=?$dom->createElement(is_string($key)?$key:"item");? $item->appendChild($itemx);? if?(!is_array($val)){? $text?=?$dom->createTextNode($val);? $itemx->appendChild($text);? }else?{? arrayToXml($val,$dom,$itemx);? }? }? return?$dom->saveXML();? }
它同樣可以將數組轉換成xml,而且支持遍歷數組,生成的xml中文也不會亂碼。
PHP將XML轉換成數組
?做接口開發的時候經常會碰到別人提交給你的是xml格式的數據,常見的微信接口、支付寶接口等,他們的接口如遍歷數組通信都是xml格式的,那么我們先想辦法拿到這個xml數據,然后再將其轉化成數組。
?假設我們獲取到一個這樣的XML:
立即學習“PHP免費學習筆記(深入)”;
?<root>? <user> 月光光abcd</user>? <pvs>13002</pvs> ?<ips>? <baidu_ip>1200</baidu_ip> ?<google_ip>1829</google_ip> ?</ips>? <date>2016-06-01</date> ?</root>
通過遍歷數組_load_string()解析讀取xml數據,然后先轉成json格式,再轉換成數組。
?function?xmlToArray($xml){? ?//禁止引用外部xml實體? libxml_disable_entity_loader(true);? $xmlstring?=?simpleXML_load_string($xml,?'SimpleXMLElement',?LIBXML_NOCDATA);? $val?=?json_decode(json_encode($xmlstring),true);? return?$val;? }
調用xmlToArray()可得到以下結果:
?
得到數組后,我們就可以對數據進行各種處理了。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END