大家好
之前遇到把陣列轉成 XML 格式的需求,這邊給大家參考一下。
// array to xml
function array_to_xml($data, &$xml_data)
{
    foreach( $data as $key => $value )
    {
        if( is_array($value) )
        {
            if( is_numeric($key) )
            {
                $key = 'item'.$key; //dealing with <0/>..<n/> issues
            }
            $subnode = $xml_data->addChild($key);
            array_to_xml($value, $subnode);
        }
        else
        {
            //20160523 zoearth 修正CDATA寫入
            if(preg_match("/[\x{4e00}-\x{9fa5}]/u",$value))
            {
                $xmlCData = $xml_data->addChild($key);
                $node = dom_import_simplexml($xmlCData);
                $node->appendChild($node->ownerDocument->createCDATASection(htmlspecialchars($value)));
            }
            else
            {
                $xml_data->addChild($key,htmlspecialchars($value));
            }
        }
    }
}

$orderData = array(
    'name' => '台中阿任',
    'sex'  => '男',
    'food' => '薯條',
);

// 處理 array to xml
$xml_data = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><ORDER_DOC/>');
array_to_xml($orderData, $xml_data);
$xml = $xml_data->asXML();

echo $xml;
給大家參考囉
感恩。