Forum eedomus
http://forum.eedomus.fr/

Fonction de conversion Json vers XML
http://forum.eedomus.fr/viewtopic.php?f=62&t=12113
Page 1 sur 1
Auteur:  dommarion [ 18 Déc 2023 21:59 ]
Sujet du message:  Fonction de conversion Json vers XML

Bonjour,
Je vous propose une fonction de transformation d'une chaîne JSON en XML, qui est légèrement différente de celle de eedomus jsonToXML($json), en bleu dans mon code la différence:
if (is_numeric($key)) {$key="n".$key;}
Cette fonction existe dans la box eedomus pour chaque device en mode configuration du périphérique, Paramètres Expert en cochant la case "Convertir le JSON en XML". Il est possible de l'intégrer dans un script, mais l'indentation tableau n'est pas prise en compte.
Si vous souhaitez intégrer cela dans vos scripts, je vous propose les 2 fonctions:
sdk_json2xml qui convertit une chaîne JSON en XML et fait appel à sdk_array2xml
sdk_array2xml qui convertit un array en XML
Code : Tout sélectionner
// Function to convert array to XML
function sdk_array2Xml($array, &$xml) {
    foreach ($array as $key => $value) {
        if (is_numeric($key)) {$key="n".$key;}
        if (is_array($value)) {
            $xml .= "<$key>";
            sdk_array2Xml($value, $xml);
            $xml .= "</$key>";
        } else {
            if ($value == false) {$value = 0;}
            $xml .= "<$key>" . htmlspecialchars($value) . "</$key>";
        }
    }
}
// Function to convert json to XML
function sdk_json2xml($json) {
// Convert JSON to array
   $array = sdk_json_decode($json, true);
// Set up header and XML encoding
   sdk_header('text/xml');
   $xml = '<?xml version="1.0" encoding="UTF-8"?><root>';
   sdk_array2xml($array, $xml);
   $xml .= '</root>';
   return $xml;
}

Bonne semaine
dommarion
Auteur:  eedomusbox [ 18 Déc 2023 22:19 ]
Sujet du message:  Re: Fonction de conversion Json vers XML

Merci
Page 1 sur 1 Le fuseau horaire est UTC+1 heure