XML可扩展标记语言是一个很好的旧数据交换格式,现在基本已经被json取代了。但可悲的是在WEB开发中XML仍然存在并用于存储和交换数据。如果你想学习xml的相关知识,那么本教程对你将有很大的帮助。
PHP将多维数组转换为xml
下面是我们要实现PHP多维数组转换XML的步骤。
步骤1:创建一个名称为array2XML()的函数,该函数用于将数组换换为XML:该功能将通过给定的多维数组不断迭代,并添加每个(键,值)对与PHP的的帮助下单独的XML节点的SimpleXML类。
步骤-2:接着定义PHP关联或多维数组进行转换。
步骤3:创建的SimpleXML类的新实例。
步骤4:回调到函数array2XML()的阵列到一个XML对象(在步骤2中定义)转换。
步骤5:最后保存生成的XML作为文件。
代码如下:
// function to convert multi-dimensional array to xml
function array2XML($obj, $array)
{
foreach ($array as $key => $value)
{
if(is_numeric($key))
$key = 'item' . $key;
if (is_array($value))
{
$node = $obj->addChild($key);
array2XML($node, $value);
}
else
{
$obj->addChild($key, htmlspecialchars($value));
}
}
}
// define php multi-dimensional array
$my_array = array (
'0' => array (
'id' => 'XYZ100',
'personal' => array (
'name' =>'Ashton Cox',
'gender' => 'Male',
'age' => 32,
'address' => array (
'street' => '7 24th Street',
'city' => 'New York',
'state' => 'NY',
'zipcode' => '10038'
)
),
'profile' => array (
'position' => 'Team Lead',
'department' => 'Software'
)
),
'1' => array (
'id' => 'XYZ121',
'personal' => array (
'name' => 'Rhona Davidson',
'gender' => 'Female',
'age' => 40,
'address' => array (
'street' => 'S2 115th Street',
'city' => 'New York',
'state' => 'NY',
'zipcode' => '10100'
)
),
'profile' => array (
'position' => 'Integration Specialist',
'department' => 'Operations'
)
)
);
// create new instance of simplexml
$xml = new SimpleXMLElement('');
// function callback
array2XML($xml, $my_array);
// save as xml file
echo (($xml->asXML('data.xml')) ? 'Your XML file has been generated successfully!' : 'Error generating XML file!');
?>
正如你可以看到array2XML()是一个递归函数,几乎经过多次深度解析数组。这也将与数字键关联数组工作,并将其作为,为XML不允许像数字键控节点<0>,<1>,<2>,......并把他们视为无效。
该方法的addChild()将一个XML节点添加到该对象。
声明新的SimpleXMLElement(“');将创建一个XML对象与顶级节点。
该生产线$ XML-> asXML(“data.xml')将保存XML字符串为”data.xml'文件。请务必提供保存在不同位置的文件的完整文件路径。
现在运行上面的脚本,并没有任何错误生成的XML文件。