搜尋

数组转xml

May 26, 2016 am 08:19 AM


formatOutput = true;
    }
     
    /**
     * 转换数组到XML
     * 
     * @param array $array      要转换的数组
     * @param string $rootName  要节点名称
     * @param string $version   版本号
     * @param string $encoding  XML编码
     * 
     * @return string
     */
    public static function parse($array, $rootName = 'root', $version = '1.0', $encoding = 'UTF-8') {
        self::init($version, $encoding);
         
        //转换
        $node = self::convert($array, $rootName);
        self::$doc->appendChild($node);
 
        return self::$doc->saveXML();
    }
     
    /**
     * 递归转换
     * 
     * @param array $array      数组
     * @param string $nodeName  节点名称
     * 
     * @return object (DOMElement)
     */
    private static function convert($array, $nodeName) {
        if (!is_array($array)) return false;
         
        //创建父节点
        $node = self::createNode($nodeName);
         
        //循环数组
        foreach ($array as $key => $value) {
            $element = self::createNode($key);
             
            //如果不是数组,则创建节点的值
            if (!is_array($value)) {
                $element->appendChild(self::createValue($value));
                $node->appendChild($element);
            } else {
                //如果是数组,则递归
                $node->appendChild(self::convert($value, $key, $element));
            }                       
        }
        return $node;
    }
     
    private static function createNode($name) {
        $node = NULL;
         
        //如果是字符串,则创建节点
        if (!is_numeric($name)) {
            $node = self::$doc->createElement($name);
        } else {
            //如果是数字,则创建默认item节点
            $node = self::$doc->createElement('item');
        }
         
        return $node;
    }
     
    /**
     * 创建文本节点
     * 
     * @param string || bool || integer $value
     * 
     * @return object (DOMText || DOMCDATASection );
     */
    private static function createValue($value) {
        $textNode = NULL;
         
        //如果是bool型,则转换为字符串
        if (true === $value || false === $value) {
            $textNode = self::$doc->createTextNode($value ? 'true' : 'false');
        } else {
            //如果含有HTML标签,则创建CDATA节点
            if (strpos($value, ' -1) {
                $textNode = self::$doc->createCDATASection($value);
            } else {
                $textNode = self::$doc->createTextNode($value);
            }
        }
 
        return $textNode;
    }


}

$a = Array();
echo ArrayToXml::parse($a, 'root');
?>

                   

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器