兩個方法 遞歸轉換 數組和xml
<?php
/*simplexml數組和xml轉換*/
// 對象轉數組:爲了更好地找到需要的節點
function toarray($sim){
// 1 先把最外面的object變成數組
$sim=(array)$sim;
//如果是對象或者數組,就都遞歸,運用上面的轉變,如果不是這兩者之一就pass
foreach ($sim as $k => $v) {
if ($v instanceof simplexmlelement||is_array($v)) {
$sim[$k]=toarray($v);
}
}
return $sim;
}
$sx=simplexml_load_file('./try.xml');
print_r($sx);
print_r(toarray($sx));
// 看源代碼可以看到,網頁返回是報錯
$arr=array('a'=>'111',
'b'=>'2222',
'c'=>array(
'd'=>'hahaha',
'e'=>array(
'what'=>'the x')));
// 數組轉xml,新的數組加入到新xml裏,,arr to xml
function toxml($arr,$node=null){
// 創建新xml文件
if ($node==null) {
$simxml=new simpleXMLElement ('<?xml version="1.0" encoding="utf-8"?><root></root>');
}else{
$simxml=$node;
}
//
foreach ($arr as $k => $v) {
if (is_array($v)) {
// addChild(節點名,內容)
// 如果是數組,就要建節點(下方的那行) 在下一輪把這個數組裏的東西放進去
// v數組 大節點名是k,到下一回,把東西放進這個simxml-》addchild裏
toxml($v,$simxml->addChild($k));
//如果數組鍵是數字,就要自己給他個標籤名,因爲直接用數字 會出問題
}else if (is_numeric($k)) {
$simxml->addChild('item',$v);
}else{
// 不是數組就直接添加子元素 鍵名-鍵值
$simxml->addChild($k,$v);
}
}
return $simxml->saveXML();
}
header('content-type:text/xml');
echo toxml($arr);
?>