xml與數組的互相轉換——php
1 xml轉換為數組:
a.xml:
<?xml version="1.0" encoding="utf-8"?>
<root>
<title>
<arr>
<b>
<c>我是c</c>
<c>我是c</c>
</b>
<b>我是b</b>
</arr>
</title>
</root>
a.php:
<?php
$xml = simplexml_load_file("a.xml");
// xml對象轉化為數組
function xml2arr($xml){
$arr = (array) $xml;
foreach ($arr as $k => $v) {
if(is_object($v)||is_array($v)){
$arr[$k] = xml2arr($v);
}
}
return $arr;
}
$arr = xml2arr($xml);
print_r($arr);
?>
2 數組轉化為xml:
<?php
// 數組轉化為xml
$a = array(
'name'=>'su',
'age'=>22,
'job'=>array(
'title'=>'經理',
'salary'=>888
),
'team'=>array('小紅','小明')
);
// 轉化函數
function arr2xml($arr,$node=null){
if($node===null){
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
}else{
$xml = $node;
}
foreach ($arr as $k => $v) {
if(is_array($v)){
// 先把key放上去 再放在key上
$_k = $xml->addChild($k);
arr2xml($v,$_k); //遞歸
}elseif(is_string($k)){
$xml->addChild($k,$v);
//因為xml的鍵不能是數字開頭 是以遇到key是數字的可以自定義鍵改變
}elseif(is_numeric($k)){
$k = 'item';
$xml->addChild($k,$v);
}
}
return $xml->saveXML();
}
header('content-type:text/xml');
echo arr2xml($a);
?>