php 多维数组 转化xml,php使用递归方法将多维数组转换为xml

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文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值