Voici une petite fonction pour transformer un array PHP en arbre XML:

function array2xml($array, $root = 'xml') {

    $xml = "<$root>";

    foreach($array as $k => $v) {

        if (is_array($v)) {
            
            $xml .= array2xml($v, (is_numeric($k) ? $root : $k));

        } else {

            if (is_numeric($k)) {
                
                $xml .= "<$root>$v</$root>";
                
            } else {

                $xml .= "<$k>$v</$k>";

            }

        }

    }

    $xml .= "</$root>";

    if (preg_match("/<$root>(<$root>.*<\/$root>)<\/$root>/", $xml, $parts)) {

        $xml = $parts[1];

    }

    return $xml;

}

Bon bien sur, elle n'est pas parfaite: il vaut mieux ne pas faire n'importe quoi dans le tableau qu'on lui donne et on pourrait y ajouter pleins de trucs (comme le support des propriétés par exemple), et j'avoue que le preg_match de la fin est un peu brutasse, mais ça marche.