1. 程式人生 > >將多維php陣列轉換為XML檔案或以字串輸出

將多維php陣列轉換為XML檔案或以字串輸出

<?php
// 函式將多維陣列轉換成xml,內部為工廠方法,遞迴
function array_to_XML($obj, $array)
{
    foreach ($array as $k => $v)
    {
        if(is_numeric($k))
            $k = 'item' . $k;

        if(is_array($v)){
            $node = $obj->addChild($k);
            array_to_XML($node, $v);
        }else{
            $obj->addChild($k, htmlspecialchars($v));
        }
    }
}

//定義一個多維陣列
$test_array = array (
    '0' => array (
        'id' => 'Y-107',
        'M' => array (
            'name' =>'EVE',
            'status' => 'Open',
            'age' => 0,
            'address' => array (
                'city' => 'shang hai'
            )
        ),
        'profile' => array (
            'color_code' =>'Desert theme',
            's_code' => 'ys77638'
        )
    ),
    '1' => array (
        'id' => 'Y-108',
        'M' => array (
            'name' => 'SC2',
            'status' => 'Open',
            'age' => 10,
            'address' => array (
                'city'=>'bei jing'
            )
        ),
        'profile' => array (
            'picture' => '3.gif',
            's_key' => 'scasdf45155'
        )
    )
);

// 建立新的simpleXML例項,注入記憶體,確定根節點
$xml = new SimpleXMLElement('<root/>');

// 回撥函式
array_to_XML($xml, $test_array);



//直接列印(不顯示尖括號,可以看原始碼來顯示尖括號)
echo $xml->asXML();

// 儲存為XML檔案
echo (($xml->asXML('data.xml')) ? 'Your XML file has been generated successfully!' : 'Error generating XML file!');
?>