php解析xml到php数组是个问题,不太好搞。看了下往上经典的处理方式就是
$b = json_decode(json_encode((array)$xml),true);
这个方式有个问题就是<![CDATA[会被处理为空得数据
不得已自己写了一个函数处理这个问题
function xml2Array($xml) {
$arr = null;
if($xml->attributes() ) {
foreach($xml->attributes() as $k=>$v) {
$arr['@a'][$k]= $v->__toString();
}
}
/*
if($xml->getName() == 'description') {
var_dump($xml);
var_dump($xml->count());exit;
}
*/
if($xml->count()) {
foreach($xml as $v) {
$va = $v->getName();
if($xml->count() > 0){
$va = $v->getName();
if(count($xml->$va) > 1) {
$arr[$v->getName()][]= xml2Array($v);
} else {
$arr[$v->getName()] = xml2Array($v);
}
} else {
$arr[$v->getName()] = xml2Array($v);
}
}
} else {
if($arr['@a']) {
$arr['_v'] = $xml->__toString();
} else {
$arr = $xml->__toString();
}
}
return $arr;
}