PHP 提供了 simplexml_load_string 方法用来解析 XML 格式的字符串,并返回 SimpleXMLElement 对象,不过一般数组是更为适用的,所以也会有转换为普通数组的需求,这个方法测试完全奏效,支持 SimpleXMLElement 对象多层嵌套的情况.
提供两个参数,第一个参数为 SimpleXMLElement 对象,第二个参数为布尔值,控制最终返回值是否包含根节点,代码如下:<?php
functionxmlToArr($xml,$root=true){
if(!$xml->children()){
return(string)$xml;
}
$array=array();
foreach($xml->children()as$element=>$node){
$totalElement=count($xml->{$element});
if(!isset($array[$element])){
$array[$element]="";
}
//Hasattributes
if($attributes=$node->attributes()){
$data=array(
'attributes'=>array(),
'value'=>(count($node)>0)?$this->__xmlToArr($node,false):(string)$node
);
foreach($attributesas$attr=>$value){
$data['attributes'][$attr]=(string)$value;
}
if($totalElement>1){
$array[$element][]=$data;
}else{
$array[$element]=$data;
}
//Justavalue
}else{
if($totalElement>1){
$array[$element][]=$this->__xmlToArr($node,false);
}else{
$array[$element]=$this->__xmlToArr($node,false);
}
}
}
if($root){
returnarray(
$xml->getName()=>$array
);
}else{
return$array;
}
}
?>
随便收藏,请保留本文地址!