下面是网上的  
代码如下: 
 
- 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); 
 
 - ?> 
 
 
  复制代码 
 
 
 
 |