php使用递归方法将多维数组转换为xml
时间:2016-06-24
本文章向大家介绍php如何使用递归的方法将多维数组转换为xml,实例讲解了php递归函数的使用方法和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作为文件。
代码如下:
<?php
// 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('<root/>');
// 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()
是一个递归函数,几乎经过多次深度解析数组。这也将与数字键关联数组工作,并将其作为<item0>
,<item1>
为XML不允许像数字键控节点<0>
,<1>
,<2>
,......
并把他们视为无效。
该方法的addChild()
将一个XML节点添加到该对象。
声明新的SimpleXMLElement(“<
root/>');
将创建一个XML对象与顶级节点<
root> </
root>
。
该生产线$ XML-> asXML(“data.xml')
将保存XML字符串为”data.xml'文件。请务必提供保存在不同位置的文件的完整文件路径。
现在运行上面的脚本,并没有任何错误生成的XML文件。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 【队伍训练】Codeforces Round #660 (Div. 2)
- 【队伍训练2】 AtCoder Beginner Contest 165
- C# 的sql server like 的参数
- sql server 字符串替换函数REPLACE
- sql server 更新两个表的某个字段
- HTML 引用Css样式的四种方式
- Java也可以像python般range出连续集合
- c# dev控件 gridcontrol 数据跟随鼠标滚轮滚动也可以编辑
- Apollo(阿波罗)配置中心Java客户端使用指南使用指南
- DevExpress.LookUpEdit控件实现自动搜索定位功能 兼使用方法(looUpEdit可编辑)
- dev GridControl直接打印 纵向合并单元格
- Dooring可视化之从零实现动态表单设计器
- 我不是最后一个知道MDC的吧?
- 实战编写 wireshark 插件解析私有协议
- 安卓 APP 三代加壳方案的研究报告