Cml\View\Xml::array2xml PHP Method

array2xml() private method

数组转xml
private array2xml ( array $arr, integer $level = 1 ) : string
$arr array 要转换的数组
$level integer 层级
return string
    private function array2xml($arr, $level = 1)
    {
        $str = $level == 1 ? "<?xml version=\"1.0\" encoding=\"" . Config::get('default_charset') . "\"?>\r\n<root>\r\n" : '';
        $space = str_repeat("\t", $level);
        foreach ($arr as $key => $val) {
            if (is_numeric($key)) {
                $key = 'item';
            }
            if (!is_array($val)) {
                if (is_string($val) && preg_match('/[&<>"\'\\?]+/', $val)) {
                    $str .= $space . "<{$key}><![CDATA[" . $val . ']]>' . "</{$key}>\r\n";
                } else {
                    $str .= $space . "<{$key}>" . $val . "</{$key}>\r\n";
                }
            } else {
                $str .= $space . "<{$key}>\r\n" . self::array2xml($val, $level + 1) . $space . "</{$key}>\r\n";
            }
        }
        if ($level == 1) {
            $str .= '</root>';
        }
        return $str;
    }