在PHP中将数组转换为XML格式

php数组格式:

$users_array = array(
    "total_users" => 3,
    "users" => array(
        array(
            "id" => 1,
            "name" => "Smith",
            "address" => array(
                "country" => "United Kingdom",
                "city" => "London",
                "zip" => 56789,
            )
        ),
        array(
            "id" => 2,
            "name" => "John",
            "address" => array(
                "country" => "USA",
                "city" => "Newyork",
                "zip" => "NY1234",
            ) 
        ),
        array(
            "id" => 3,
            "name" => "Viktor",
            "address" => array(
                "country" => "Australia",
                "city" => "Sydney",
                "zip" => 123456,
            ) 
        ),
    )
);

Array to XML:
通过使用PHP的扩展SimpleXML,我们将uses_array转换为xml格式。

//function defination to convert array to xml
function array_to_xml($array, &$xml_user_info) {
    foreach($array as $key => $value) {
        if(is_array($value)) {
            if(!is_numeric($key)){
                $subnode = $xml_user_info->addChild("$key");
                array_to_xml($value, $subnode);
            }else{
                $subnode = $xml_user_info->addChild("item$key");
                array_to_xml($value, $subnode);
            }
        }else {
            $xml_user_info->addChild("$key",htmlspecialchars("$value"));
        }
    }
}

//creating object of SimpleXMLElement
$xml_user_info = new SimpleXMLElement("");

//function call to convert array to xml
array_to_xml($users_array,$xml_user_info);

// 将数据存储到一个变量中
$result = $xml_user_info->asXML();

// 去掉xml头信息
$new_result = '';
if(!empty($result)){
   $new_result = str_replace('','',$result);
}

//或者将xml保存为文件
$xml_file = $xml_user_info->asXML('users.xml');

//success and error message based on xml creation
if($xml_file){
    echo 'XML file have been generated successfully.';
}else{
    echo 'XML file generation error.';
}

保存成功的XML文件:
The users.xml file contains the following xml.



    3
    
        
            1
            Smith
            
United Kingdom London 56789
2 John
USA Newyork NY1234
3 Viktor
Australia Sydney 123456

附注:
Insert XML Into Databse
If you want to save the XML into the database, then replace the $xml_file variable line with the following code line. Now you can insert $xml_file variable into the database.

$xml_file = $xml_user_info->asXML();

你可能感兴趣的:(在PHP中将数组转换为XML格式)