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中在数据库中保存Checkbox数据(2)
Oct 09 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
PHP Directory 函数的详解
Mar 07 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
crontab无法执行php的解决方法
Jan 25 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
详解php语言最牛掰的Laravel框架
Nov 20 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
JavaScript 学习笔记(五)
2009/12/31 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
Python 下载及安装详细步骤
2019/11/04 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
《忆江南》教学反思
2014/04/07 职场文书
关于中国梦的演讲稿
2014/04/23 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
党性修养心得体会2016
2016/01/21 职场文书
自荐信大全
2019/03/21 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers
Go获取两个时区的时间差
2022/04/20 Golang