Beispiel #1
0
 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;
 }