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

yipeiwu_com5年前PHP代码库

在开发中,我们经常会遇到数组与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()可得到以下结果:

 

得到数组后,我们就可以对数据进行各种处理了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【宜配屋www.yipeiwu.com】。

相关文章

用php随机生成福彩双色球号码的2种方法

不瞒您说,俺也是个双色球爱好者,经常买,但迟迟没有中过一等奖,哈哈。这里为大家介绍用php随机生成福彩双色球号码的二种方法,供朋友们学习参考。新的一年,祝大家中大奖,发大财。 方法一复制...

php图片添加水印例子

图片添加水印我相信各位朋友都知道的,今天我们来看一段php的图片添加水印例子,希望文章能够帮助到各位朋友。 <?php /** * 图片添加水印...

php采用session实现防止页面重复刷新

如何防止页面重复刷新,在php环境下可以利用session来轻松实现。 b.php的代码 <?php //只能通过post方式访问 if ($_SERVER['...

PHP编码规范-php coding standard

目录 介绍 标准化的重要性 解释 认同观点 项目的四个阶段 命名规则 合适的命名 缩写词不要全部使用大写字母 类命名 类库命名 方法命名 类属性命名...

php可应用于面包屑导航的迭代寻找家谱树实现方法

本文实例讲述了php可应用于面包屑导航的迭代寻找家谱树实现方法。分享给大家供大家参考。具体实现方法如下: <?php echo "<pre>"; $area...