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 include的妙用,实现路径加密
Jul 29 PHP
php 将excel导入mysql
Nov 09 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
php生成Android客户端扫描可登录的二维码
May 13 PHP
简单的pgsql pdo php操作类实现代码
Aug 25 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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
mysql limit查询优化分析
2008/11/12 PHP
php重定向的三种方法分享
2012/02/22 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
Django 路由系统URLconf的使用
2018/10/11 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
Python3并发写文件与Python对比
2019/11/20 Python
关于python中的xpath解析定位
2020/03/06 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
幼儿园消防演练方案
2014/02/13 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
用电申请报告范文
2015/05/18 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python
Golang表示枚举类型的详细讲解
2021/09/04 Golang
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
德生2P3收音机开箱评测
2022/04/30 无线电
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python