PHP中将数组转成XML格式的实现代码

2015-01-24信息快讯网

网上找的一段代码! 然后我自己根据php DOMDocument又写了一段代码,需要的朋友可以参考下。

下面是网上的
 
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实现插入排序?
apache和php之间协同工作的配置经验分享
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
简单的php数据库操作类代码(增,删,改,查)
PHP插入排序实现代码
精美漂亮的php分页类代码
php页面跳转代码 输入网址跳转到你定义的页面
php中将html中的br换行符转换为文本输入中的换行符
自定义php类(查找/修改)xml文档
php中DOMElement操作xml文档实例演示
比较简单的百度网盘文件直链PHP代码
php添加文章时生成静态HTML文章的实现代码
php截取字符串并保留完整xml标签的函数代码
PHP读取xml方法介绍
用PHP编写和读取XML的几种方式
PHP 防注入函数(格式化数据)
PHP程序开发范例学习之表单 获取文本框的值
php记录日志的实现代码
判断Keep-Alive模式的HTTP请求的结束的实现代码
php学习笔记(三)操作符与控制结构
PHP几个数学计算的内部函数学习整理
PHP缓存技术的使用说明
php 文件上传类代码
php代码运行时间查看类代码分享
用PHP实现的四则运算表达式计算实现代码
php XPath对XML文件查找及修改实现代码
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
用PHP的超级变量$_GET获取HTML表单(Form) 数据
深入理解PHP原理之错误抑制与内嵌HTML分析
php模拟asp中的XmlHttpRequest实现http请求的代码
用PHP读取和编写XML DOM的实现代码
php simplexmlElement操作xml的命名空间实现代码
©2014-2024 dbsqp.com