PHP处理数组和XML之间的互相转换

 更新时间:2016年06月02日 08:46:41   投稿:lijiao  
这篇文章主要介绍了如何使用PHP处理数组和XML之间的互相转换,详细介绍了PHP将XML转换成数组,PHP将数组转换成XML的方法,感兴趣的小伙伴们可以参考一下

在开发中,我们经常会遇到数组与XML之间的互相转换,尤其在处理接口开发的时候经常用到,比如对方客户端POST一个XML格式的数据到服务器上,服务器上的程序要负责接收解析,还有需要将数据表数据以XML格式提供给第三方等等应用。
本文我们将简单介绍如何使用PHP处理数组和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.="<".$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格式输出文件var_export函数实例

    php格式输出文件var_export函数实例

    这篇文章主要介绍了php格式输出文件var_export函数,以实例形式讲述了格式输出函数var_export的特性与具体用法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • PHP实现的下载远程图片自定义函数分享

    PHP实现的下载远程图片自定义函数分享

    这篇文章主要介绍了PHP实现的下载远程图片自定义函数分享,本文直接给出实现代码和,本文直接给出实现代码和使用方法,需要的朋友可以参考下
    2015-01-01
  • 详解php中反射的应用

    详解php中反射的应用

    这篇文章主要为大家详细介绍了php中反射的应用,何为反射,反射的作用是什么,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • PHP三元运算符的结合性介绍

    PHP三元运算符的结合性介绍

    PHP三元运算符的结合性介绍,需要的朋友可以参考下。
    2012-01-01
  • 10个对初学者非常有用的PHP技巧

    10个对初学者非常有用的PHP技巧

    这篇文章主要为大家详细介绍了10个对初学者非常有用的PHP技巧,这些PHP技巧适用于初学者,而不是那些已经在使用MVC框架的人,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • PHP删除指定目录中的所有目录及文件的方法

    PHP删除指定目录中的所有目录及文件的方法

    这篇文章主要介绍了PHP删除指定目录中的所有目录及文件的方法,通过自定义函数delFile实现递归删除的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • php连接与操作PostgreSQL数据库的方法

    php连接与操作PostgreSQL数据库的方法

    这篇文章主要介绍了php连接与操作PostgreSQL数据库的方法,以实例形式较为详细的分析了php连接PostgreSQL数据库以及进行读取与增加、修改、删除等技巧,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • php 实现进制相互转换

    php 实现进制相互转换

    最近的项目中需要用到进制转换,这个问题在刚刚接触计算机理论时候,还是很会的,好久不用,居然模糊了……
    2016-04-04
  • PHP实现找出链表中环的入口节点

    PHP实现找出链表中环的入口节点

    这篇文章主要介绍了PHP实现找出链表中环的入口节点,涉及php针对环形链表的遍历、查找、计算等相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • 详解WordPress中分类函数wp_list_categories的使用

    详解WordPress中分类函数wp_list_categories的使用

    这篇文章主要介绍了详解WordPress中分类函数wp_list_categories的使用,文中罗列其主要参数的功能和写法,需要的朋友可以参考下
    2016-01-01

最新评论