Ce que fait cet outil
Chaque élément devient une clé ; ses enfants deviennent la valeur.
<user id="1"><name>Ada</name></user>
{ "user": { "name": "Ada", "@_id": "1" } }
Trois points où les modèles divergent
XML et JSON ne décrivent pas les mêmes formes, et tout convertisseur doit trancher. Voici les arbitrages.
Les attributs
Ils deviennent des clés préfixées @_. JSON n’a qu’une sorte de membre ; XML a des attributs et des éléments, qui peuvent porter le même nom — <user id="1"><id>2</id></user> contient deux choses différentes appelées id. Le préfixe les sépare. Un réglage supprime les attributs si vous n’en avez pas besoin.
Quand un élément porte à la fois du texte et des attributs, le texte se range sous #text.
La répétition
Un <item> donne un objet. Deux donnent un tableau.
<r><i>1</i></r> → { "r": { "i": 1 } }
<r><i>1</i><i>2</i></r> → { "r": { "i": [1, 2] } }
Ce n’est pas un défaut qu’on pourrait corriger : rien dans un document XML ne dit si un élément est répétable. Seul un schéma le sait. Si votre code attend une liste, normalisez-la à l’arrivée.
Le contenu mixte
Celui-là, JSON ne sait tout simplement pas l’exprimer, et mieux vaut le dire franchement.
<p>Bonjour <b>tout le monde</b> encore</p>
JSON n’a aucun moyen de dire que Bonjour précédait <b> et encore le suivait. Les fragments de texte sont regroupés sous #text et leur position par rapport aux éléments est perdue, de même que l’espacement entre eux. Si c’est le texte qui compte — un document plutôt qu’un enregistrement — ne convertissez pas, et passez par le formateur XML.
Les types
<a>1</a> donne le nombre 1. <a>007</a> donne la chaîne "007", parce qu’un zéro initial est d’ordinaire un code postal ou un numéro de compte, et le lire comme sept le perd. Un identifiant de vingt chiffres reste lui aussi une chaîne : un nombre JSON l’arrondirait.
Ce qui n’est pas une donnée
La déclaration XML et toute instruction de traitement sont écartées. Elles décrivent le document, pas son contenu — une clé ?xml à côté de votre élément racine n’a jamais été une information que vous aviez demandée.
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.