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 相关文章推荐
967 个函式
Oct 09 PHP
用PHP的ob_start() 控制您的浏览器cache
Aug 03 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
非常有用的9个PHP代码片段
Apr 06 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
THINKPHP5.1 Config的配置与获取详解
Jun 08 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 在线打包_支持子目录
2008/06/28 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
js玩一玩WSH吧
2007/02/23 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Python中关于浮点数的冷知识
2019/09/22 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
几道Java和数据库的面试题
2013/05/30 面试题
董事长岗位职责
2013/11/30 职场文书
财务工作者先进事迹材料
2014/01/17 职场文书
英语复习计划
2015/01/19 职场文书
法律意见书范文
2015/05/20 职场文书
运动会广播稿300字
2015/08/19 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL
MySQL索引是啥?不懂就问
2021/07/21 MySQL
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python