Beispiel #1
0
 /**
  * @param mixed  $data
  * @param string $root
  * @param int    $level
  * @param bool   $format
  *
  * @return string
  */
 protected static function arrayToXmlInternal($data, $root = null, $level = 1, $format = true)
 {
     $xml = null;
     if (ArrayUtils::isArrayNumeric($data)) {
         foreach ($data as $value) {
             $xml .= self::arrayToXmlInternal($value, $root, $level, $format);
         }
     } else {
         if (ArrayUtils::isArrayAssociative($data)) {
             if (!empty($root)) {
                 if ($format) {
                     $xml .= str_repeat("\t", $level - 1);
                 }
                 $xml .= "<{$root}>";
                 if ($format) {
                     $xml .= "\n";
                 }
             }
             foreach ($data as $key => $value) {
                 $xml .= self::arrayToXmlInternal($value, $key, $level + 1, $format);
             }
             if (!empty($root)) {
                 if ($format) {
                     $xml .= str_repeat("\t", $level - 1);
                 }
                 $xml .= "</{$root}>";
                 if ($format) {
                     $xml .= "\n";
                 }
             }
         } else {
             if (is_array($data)) {
                 // empty array
             } else {
                 // not an array
                 if (!empty($root)) {
                     if ($format) {
                         $xml .= str_repeat("\t", $level - 1);
                     }
                     $xml .= "<{$root}>";
                     if (!is_null($data)) {
                         if (is_bool($data)) {
                             $xml .= $data ? 'true' : 'false';
                         } else {
                             if (is_int($data) || is_float($data)) {
                                 $xml .= $data;
                             } else {
                                 if (is_string($data)) {
                                     $htmlValue = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
                                     $xml .= $htmlValue;
                                 }
                             }
                         }
                     }
                     $xml .= "</{$root}>";
                     if ($format) {
                         $xml .= "\n";
                     }
                 }
             }
         }
     }
     return $xml;
 }