100 % local — vos données ne quittent jamais votre navigateur

XML en JSON — attributs compris

Convertissez du XML en JSON. Attributs, éléments répétés et texte atterrissent tous quelque part où un point ou un crochet suffit à les atteindre.

Instantané Privé Zéro cookie
Indentation

Entrée XML

Sortie JSON

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.

Questions fréquentes

Pourquoi mon <item> unique est-il devenu un objet et non un tableau ?
Parce que rien dans un document XML ne dit si un élément se répète. Un `<item>` ressemble exactement à une liste d’un seul élément, et seul un schéma fait la différence. À partir de deux, c’est un tableau ; à un, c’est un objet. Si votre consommateur veut une liste dans les deux cas, normalisez chez lui — `Array.isArray(x) ? x : [x]` est la ligne habituelle.
Pourquoi les attributs sont-ils préfixés @_ ?
Parce que JSON n’a qu’une sorte de membre et XML en a deux. `<user id="1"><id>2</id></user>` contient un attribut et un élément nommés tous deux `id` sans être la même chose ; sans préfixe, l’un écraserait l’autre. Le réglage supprime complètement les attributs si vous préférez ne pas les voir.
Pourquoi <a>007</a> reste-t-il une chaîne quand <a>7</a> devient un nombre ?
Parce que le zéro initial porte presque toujours du sens : un code postal, un numéro de compte, une référence de pièce. Lire `007` comme le nombre sept le perd définitivement. Un nombre sans zéro initial est converti ; ce qu’un nombre JSON ne peut pas porter exactement, comme un identifiant de vingt chiffres, reste une chaîne pour la même raison.

Convertisseurs associés