zoukankan      html  css  js  c++  java
  • PHP数组转成XML

    简介:这是PHP数组转成XML的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。

    class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=343154' scrolling='no'>

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

    爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具

    http://biancheng.dnbcw.info/php/343154.html pageNo:5
  • 相关阅读:
    μC/OS-III---I笔记10---内存管理
    μC/OS-III---I笔记9---任务等待多个内核对象和任务内建信号量与消息队列
    μC/OS-III---I笔记8---事件标志
    二.java下使用RabbitMQ实现hello world
    (转)rabbitMQ基础知识及命令语句
    一.windows环境下rabbitMQ的的安装和配置
    spring mvc对静态资源的访问
    2017年12月计划
    java两种动态代理方式的理解
    log4j配置文件详解(转)
  • 原文地址:https://www.cnblogs.com/ooooo/p/2242000.html
Copyright © 2011-2022 走看看