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连mysql和oracle数据库性能比较
Oct 09 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
php生成图形(Libchart)实例
Nov 06 PHP
php中引用符号(&amp;)的使用详解
Nov 13 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
在Win7 中为php扩展配置Xcache
Oct 08 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
round robin权重轮循算法php实现代码
May 28 PHP
Nginx环境下PHP flush失效的解决方法
Oct 19 PHP
PHP实现对xml的增删改查操作案例分析
May 19 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 动态执行带有参数的类方法
2009/04/10 PHP
PHP 输出缓存详解
2009/06/20 PHP
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
PHP的PSR规范中文版
2013/09/28 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
百度留言本js 大家可以参考下
2009/10/13 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
详解python分布式进程
2018/10/08 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
jupyter notebook 重装教程
2020/04/16 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
印度购物网站:TATA CLiQ
2017/11/23 全球购物
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
高中军训感言400字
2014/02/24 职场文书
住宅使用说明书
2014/05/09 职场文书
小学校本培训方案
2014/06/06 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技