Codificação de objeto XML

Isso eu uso para codificação Array- ou um JSON-Object em XML.
O param $ obj representa o objeto fornecido, nesse caso é um Array ou um JSON.
O segundo parâmetro é o nível $ que é usado para obter a profundidade do elemento em XML, que é usado recursivamente para obter também os objetos associativos.

function XMLEncode($obj, $level = 1, $xml = NULL)
{
if(!$obj){
return FALSE;
}

if($level==1)
{
$xml
.= '<?xml version="1.0" encoding="ISO-8859-1"?>'."n";
}

if(is_array($obj) || is_object($obj)) {

foreach ($obj as $key => $value)
{
$key
= strtolower($key);

if($level>1)
{
$node
= $xml;
}

$xml
.= sprintf(str_repeat("t", $level).'<%s>', $key);

if (is_array($value) || is_object($value))
{
$xml
.= XMLEncode($value, $level+1);
}
else
{
if (trim($value) != NULL)
{
if (htmlspecialchars($value) != $value)
{
$xml
.= str_repeat("t",$level)."<![CDATA[$value]]>n";
}
else
{
$xml
.= str_repeat("t",$level)."$valuen";
}
}
}

$xml
.= sprintf(str_repeat("t",$level).'</%s>', $key);
}

return $xml;

}
else
{
return (string)$obj;
}

return $obj;
}