时间:2021-07-01 10:21:17 帮助过:4人阅读
在开发中,我们经常会遇到数组与XML之间的互相转换,尤其在处理接口开发的时候经常用到,比如对方客户端POST一个XML格式的数据到服务器上,服务器上的程序要负责接收解析,还有需要将数据表数据以XML格式提供给第三方等等应用。
PHP将数组转换成XML
PHP可以将数组转换成xml格式,简单的办法是遍历数组,然后将数组的key/value转换成xml节点,再直接echo输出了,如:
- function arrayToXml($arr){
- $xml = "<root>";
- foreach ($arr as $key=>$val){
- if(is_array($val)){
- $xml.="<".$key.">".arrayToXml($val)."</".$key.">";
- }else{
- $xml.="<".$key.">".$val."</".$key.">";
- }
- }
- $xml.="</root>";
- return $xml;
- }
我测试了下,这个最简单,速度又快,支持多为数组,中文也不会乱码。
另一种方法是利用DOMDocument来生成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:
- <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>
通过simplexml_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实现微信开发之带参数二维码的使用
如何使用PHP实现正则抓取页面中的网址
php+jQuery+Ajax实现页面异步刷新功能
以上就是PHP处理数组和XML之间的互相转换详解的详细内容,更多请关注Gxl网其它相关文章!