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