zoukankan      html  css  js  c++  java
  • 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();
    }
  • 相关阅读:
    Centos7 安装MySQL 5.7 (通用二进制包)
    test
    test
    Windows Live Writer离线写CSDN博客
    Windows Live Writer离线写CSDN博客
    Oracle单引号双重角色——字符串引用与转义
    Oracle单引号双重角色——字符串引用与转义
    Kettle实现数据库迁移
    Kettle实现数据库迁移
    kettle实现数据库迁移----多表复制向导
  • 原文地址:https://www.cnblogs.com/mutuan/p/2130564.html
Copyright © 2011-2022 走看看