function array2xml($array, $baseTag = 'data', $level = 0) { if ($level == 0) { $txt = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; $allAttrs = isset($array['@attributes']) ? ' ' . Array_XML::writeAttributes($array['@attributes']) : ''; $txt .= "<{$baseTag}{$allAttrs}>\n"; } else { $txt = ''; } $padding = str_repeat(" ", ($level + 1) * 4); //echo '<h1>array</h1> '; print_r($array); foreach ($array as $key => $value) { //echo '<p>"', $key, '" '; if (empty($key) || $key === '@attributes') { continue; } if (!is_array($value)) { $txt .= "{$padding}<{$key}>{$value}</{$key}>\n"; } else { if (isset($value['value'])) { //echo ' ', $value['value']; $attrs = isset($value['@attributes']) ? ' ' . Array_XML::writeAttributes($value['@attributes']) : ''; $txt .= "{$padding}<{$key}{$attrs}>{$value['value']}</{$key}>\n"; } elseif (isset($value[0])) { //echo ' Array '; $arrAttrs = isset($value['@attributes']) ? ' ' . Array_XML::writeAttributes($value['@attributes']) : ''; foreach ($value as $i => $v) { if ((string) $i != '@attributes') { //echo $i, ' '; if (isset($v['value'])) { $attrs = isset($v['@attributes']) ? ' ' . Array_XML::writeAttributes($v['@attributes']) : ''; //$txt .= "$padding<{$key}{$arrAttrs}>{$v['value']}</{$key}>\n"; $txt .= "{$padding}<{$key}{$attrs}>{$v['value']}</{$key}>\n"; } else { $attrs = isset($v['@attributes']) ? ' ' . Array_XML::writeAttributes($v['@attributes']) : ''; $txt .= "{$padding}<{$key}{$attrs}>\n"; $txt .= Array_XML::array2xml($v, $baseTag, $level + 1); $txt .= "{$padding}</{$key}>\n"; } } } } else { if (isset($value['@attributes']) && count($value) == 1 || count($value) == 0) { $attrs = isset($value['@attributes']) ? ' ' . Array_XML::writeAttributes($value['@attributes']) : ''; $txt .= "{$padding}<{$key}{$attrs} />\n"; } else { $attrs = isset($value['@attributes']) ? ' ' . Array_XML::writeAttributes($value['@attributes']) : ''; $txt .= "{$padding}<{$key}{$attrs}>\n"; $txt .= Array_XML::array2xml($value, $baseTag, $level + 1); $txt .= "{$padding}</{$key}>\n"; } } } } $txt .= $level == 0 ? "</{$baseTag}>" : ''; return $txt; }