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 相关文章推荐
支持oicq头像的留言簿(一)
Oct 09 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
thinkphp常见路径用法分析
Dec 02 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
PHP答题类应用接口实例
Feb 09 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
分析php://output和php://stdout的区别
May 06 PHP
php将xml转化对象的实例详解
Nov 17 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
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
js实现验证码功能
2020/07/24 Javascript
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
python opencv进行图像拼接
2020/03/27 Python
pycharm导入源码的具体步骤
2020/08/04 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
中专生的个人自我评价
2013/12/11 职场文书
挑战杯创业计划书的写作指南
2014/01/07 职场文书
《钱学森》听课反思
2014/03/01 职场文书
市场营销专业自荐书
2014/06/10 职场文书
销售岗位职责范本
2014/06/12 职场文书
2014年民警工作总结
2014/11/25 职场文书
乐山大佛导游词
2015/02/02 职场文书
期末个人总结范文
2015/02/13 职场文书
居住证明范文
2015/06/17 职场文书
Python中字符串对象语法分享
2022/02/24 Python