极品懒人

导航

PHP数组转成XML

 网上找的一段代码! 然后我自己更具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();
}

 

posted on 2011-08-08 09:39  极品懒人  阅读(15282)  评论(0编辑  收藏  举报