第一种:
function buildXml( $data, $wrap= 'xml' ){
$str = "<{$wrap}>";
if( is_array( $data ) ){
if( hasIndex( $data ) ){
foreach( $data as $k=>$v ){
$str .= buildXml( $v, $k );
}
}else{
foreach( $data as $v ){
foreach( $v as $k1=>$v1 )
$str .= buildXml( $v1, $k1 );
}
}
}else{
//$str .= $data;
$str.="<![CDATA[".$data."]]>";
}
$str .= "</{$wrap}>";
return $str;
}
function hasIndex( $arr ){
return array_keys($arr) !== range(0, count($arr) - 1);
}
$arr1 = [
'title'=>'title',
'bbb'=>[
'AAA'=>12,
'BBB'=>555
]
];
$arr2 = [
'aaa'=>1,
'bbb'=>[
['AAA'=>[
'BBB'=>[
['DDDD'=>111],['DDDD'=>222]
]
]],
['AAA'=>6]
]
];
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>';
echo buildXml($arr1);
exit;
//数组转XML 第二种:
function arrayToXml($arr)
{
$xml = "<xml>";
foreach ($arr as $key=>$val)
{
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</xml>";
return $xml;
}
//将XML转为array
function xmlToArray($xml)
{
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $values;
}