php 處理數組和XML之間的互相轉換實例代碼

在開發中,我們經常會遇到數組與xml之間的互相轉換,尤其在處理接口開發的時候經常用到,比如對方客戶端post一個xml格式的數據到服務器上,服務器上的程序要負責接收解析,還有需要將數據表數據以xml格式提供給第三方等等應用。
本文我們將簡單介紹如何使用php處理數組和xml之間的互相轉換。

PHP將數組轉換成XML
?PHP可以將數組轉換成xml格式,簡單的辦法是遍歷數組,然后將數組的key/value轉換成xml節點,再直接echo輸出了,如:

function?arrayToXml($arr){?  $xml?=?"<root>";?  foreach?($arr?as?$key=&gt;$val){?  if(is_array($val)){?  $xml.="".arrayToXml($val)."".$key."&gt;";?  }else{?  $xml.="".$val."".$key."&gt;";?  }?  }?  $xml.="</root>";?  return?$xml;?  }

我測試了下,這個最簡單,速度又快,支持多為數組,中文也不會亂碼。
?另一種方法是利用DOM遍歷數組來生成xml結構:

function?arrayToXml($arr,$dom=0,$item=0){?  if?(!$dom){?  $dom?=?new?DOMDocument("1.0");?  }?  if(!$item){?  $item?=?$dom-&gt;createElement("root");?  $dom-&gt;appendChild($item);?  }?  foreach?($arr?as?$key=&gt;$val){?  $itemx?=?$dom-&gt;createElement(is_string($key)?$key:"item");?  $item-&gt;appendChild($itemx);?  if?(!is_array($val)){?  $text?=?$dom-&gt;createTextNode($val);?  $itemx-&gt;appendChild($text);?    }else?{?  arrayToXml($val,$dom,$itemx);?  }?  }?  return?$dom-&gt;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()可得到以下結果:

php 處理數組和XML之間的互相轉換實例代碼?

得到數組后,我們就可以對數據進行各種處理了。

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享