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维护文件系统
Oct 09 PHP
PHP VS ASP
Oct 09 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
php获取linux命令结果的实例
Mar 13 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 PHP
php和asp语法上的区别总结
May 12 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 url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
js DOM模型操作
2009/12/28 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
详解python with 上下文管理器
2020/09/02 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
医学院四年学习生活的自我评价
2013/11/06 职场文书
会计电算化个人自我评价
2013/11/17 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS