Ce que fait cet outil
Les clés deviennent des éléments, les valeurs leur contenu :
{ "utilisateur": { "nom": "Ada", "port": 8080, "actif": true } }
<utilisateur>
<nom>Ada</nom>
<port>8080</port>
<actif>true</actif>
</utilisateur>
Un document à plusieurs clés racines est emballé dans <root>, XML n’admettant qu’un seul élément racine. Un tableau racine devient des éléments <item> répétés à l’intérieur.
Les types cessent d’exister ici
Regardez à nouveau cette sortie. 8080 et true sont désormais du texte, et rien dans le document ne dit qu’ils aient jamais été autre chose.
Ce n’est pas une limite de la conversion : c’est ce qu’est XML. Un document XML porte une structure et du texte. Les types viennent d’un schéma — XSD, DTD, RELAX NG — qui vit hors du document, et que cette conversion n’a aucun moyen d’inventer.
La conséquence pratique mérite d’être dite franchement : reconvertir vous rendra des chaînes. {"port": 8080} revient en {"port": "8080"}, sauf si ce qui le lit en décide autrement — c’est-à-dire devine, et se trompe sur un numéro de version comme 1.10 ou un code postal comme 01234.
S’il vous faut un aller-retour qui préserve les types, XML n’est pas la bonne destination. S’il vous faut du XML, prévoyez que le retour sera lossy.
Les clés sont réparées, pas émises cassées
Un nom d’élément XML ne peut pas contenir d’espace ni commencer par un chiffre :
| clé | élément |
|---|---|
user name | <user_name> |
2nd | <_2nd> |
Et quand deux clés se réparent en un même nom, la seconde devient user_name_1. Les fondre ferait disparaître une valeur en silence, ce que cet outil s’emploie avant tout à éviter.
Les attributs, et l’aller-retour
Une clé écrite "@_id" devient un attribut, "#text" devient le texte de l’élément :
{ "utilisateur": { "@_id": "1", "#text": "Ada" } }
<utilisateur id="1">Ada</utilisateur>
C’est la convention qu’émet le sens XML vers JSON : un document converti depuis XML se reconvertit dans la même forme — les types devenus chaînes, comme ci-dessus.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.