Fonction de conversion Json vers XML


Fonction de conversion Json vers XML

Messagepar dommarion » 18 Déc 2023 21:59

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
Dernière édition par dommarion le 21 Avr 2024 21:10, édité 4 fois.
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 679
Inscription : 28 Déc 2020

Re: Fonction de conversion Json vers XML

Messagepar eedomusbox » 18 Déc 2023 22:19

Merci
eedomusbox
 
Messages : 895
Inscription : 12 Sep 2014
Localisation : 69


Retour vers Entraide programmation plugins

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)