PHP中将数组转成XML格式的实现代码


Posted in PHP onAugust 08, 2011

下面是网上的

class ArrayToXML 
{ 
/** 
* The main function for converting to an XML document. 
* Pass in a multi dimensional array and this recrusively loops through and builds up an XML document. 
* 
* @param array $data 
* @param string $rootNodeName - what you want the root node to be - defaultsto data. 
* @param SimpleXMLElement $xml - should only be used recursively 
* @return string XML 
*/ 
public static function toXml($data, $rootNodeName = 'data', $xml=null) 
{ 
// turn off compatibility mode as simple xml throws a wobbly if you don't. 
if (ini_get('zend.ze1_compatibility_mode') == 1) 
{ 
ini_set ('zend.ze1_compatibility_mode', 0); 
} 
if ($xml == null) 
{ 
$xml = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?><$rootNodeName />"); 
} 
// loop through the data passed in. 
foreach($data as $key => $value) 
{ 
// no numeric keys in our xml please! 
if (is_numeric($key)) 
{ 
// make string key... 
$key = "unknownNode_". (string) $key; 
} 
// replace anything not alpha numeric 
$key = preg_replace('/[^a-z]/i', '', $key); 
// if there is another array found recrusively call this function 
if (is_array($value)) 
{ 
$node = $xml->addChild($key); 
// recrusive call. 
ArrayToXML::toXml($value, $rootNodeName, $node); 
} 
else 
{ 
// add single node. 
$value = htmlentities($value); 
$xml->addChild($key,$value); 
} 
} 
// pass back as string. or simple xml object if you want! 
return $xml->asXML(); 
} 
}

下面是我编辑过的代码
function arrtoxml($arr,$dom=0,$item=0){ 
if (!$dom){ 
$dom = new DOMDocument("1.0"); 
} 
if(!$item){ 
$item = $dom->createElement("root"); 
$dom->appendChild($item); 
} 
foreach ($arr as $key=>$val){ 
$itemx = $dom->createElement(is_string($key)?$key:"item"); 
$item->appendChild($itemx); 
if (!is_array($val)){ 
$text = $dom->createTextNode($val); 
$itemx->appendChild($text); 
}else { 
arrtoxml($val,$dom,$itemx); 
} 
} 
return $dom->saveXML(); 
}

数组转换成XML格式
<? 
$elementLevel = 0 ; 
function array_Xml($array, $keys = '') 
{ 
global $elementLevel; 
if(!is_array($array)) 
{ 
if($keys == ''){ 
return $array; 
}else{ 
return "\n<$keys>" . $array . "</$keys>"; 
} 
}else{ 
foreach ($array as $key => $value) 
{ 
$haveTag = true; 
if (is_numeric($key)) 
{ 
$key = $keys; 
$haveTag = false; 
} 
/** 
* The first element 
*/ 
if($elementLevel == 0 ) 
{ 
$startElement = "<$key>"; 
$endElement = "</$key>"; 
} 
$text .= $startElement."\n"; 
/** 
* Other elements 
*/ 
if(!$haveTag) 
{ 
$elementLevel++; 
$text .= "<$key>" . array_Xml($value, $key). "</$key>\n"; 
}else{ 
$elementLevel++; 
$text .= array_Xml($value, $key); 
} 
$text .= $endElement."\n"; 
} 
} 
return $text; 
} 
?>

函数描述及例子
<? 
$array = array( 
"employees" => array( 
"employee" => array( 
array( 
"name" => "name one", 
"position" => "position one" 
), 
array( 
"name" => "name two", 
"position" => "position two" 
), 
array( 
"name" => "name three", 
"position" => "position three" 
) 
) 
) 
); 
echo array_Xml($array); 
?>
PHP 相关文章推荐
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
php批量删除操作(数据访问)
May 23 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 #PHP
php记录日志的实现代码
Aug 08 #PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 #PHP
php学习笔记(三)操作符与控制结构
Aug 06 #PHP
PHP几个数学计算的内部函数学习整理
Aug 06 #PHP
PHP缓存技术的使用说明
Aug 06 #PHP
PHP header函数分析详解
Aug 06 #PHP
You might like
随机广告显示(PHP函数)
2006/10/09 PHP
怎样在UNIX系统下安装php3
2006/10/09 PHP
培养自己的php编码规范
2015/09/28 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
python的多重继承的理解
2017/08/06 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
python关于倒排列的知识点总结
2020/10/13 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
校园自助餐厅的创业计划书
2013/12/26 职场文书
工作表扬信的范文
2014/01/10 职场文书
初一体育教学反思
2014/01/29 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
劳模先进事迹材料
2014/12/24 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server