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;
}