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 相关文章推荐
php4的彩蛋
Oct 09 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
php随机获取金山词霸每日一句的方法
Jul 09 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 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的bbs设计(三)
2006/10/09 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
PHP二维数组去重算法
2016/12/17 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
详解jquery和vue对比
2019/04/16 jQuery
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
Python随机生成数模块random使用实例
2015/04/13 Python
利用python实现数据分析
2017/01/11 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
python实现经纬度采样的示例代码
2020/12/10 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
学校介绍信范文
2014/01/14 职场文书
生日寿宴答谢词
2014/01/19 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
社团个人总结范文
2015/03/05 职场文书
《将心比心》教学反思
2016/02/23 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS