araç köşesi

Convertir un JSON en XML

Transformez des données JSON en document XML ; vous nommez la racine, les clés invalides sont adaptées sans rien perdre

Vos données restent chez vous. La conversion se fait dans le navigateur ; rien n'est envoyé à un serveur.

Comment ça marche

Collez le JSON dans le panneau de gauche ; le XML apparaît à droite pendant que vous écrivez. XML exige un élément racine unique, donc tout votre JSON est enveloppé dans l'élément dont vous écrivez le nom : « root » par défaut fait l'affaire, mais si vous préparez un document de commande, écrire « commande » rend la sortie directement utilisable. Les clés d'objet deviennent des noms d'éléments ; les tableaux s'écrivent comme des éléments répétés, soit sous le nom fixe <item>, soit sous le singulier du champ parent (le tableau « produits » sort en éléments <produit>). Un nom d'élément XML ne peut ni commencer par un chiffre ni contenir d'espace ou de parenthèse : une clé comme « annee 2024 » n'est pas cassée en silence, elle devient « annee_2024 », et la ligne de résultat indique combien de clés ont été adaptées et lesquelles. Les caractères & < > " ' du texte sont échappés, une valeur null devient un élément vide (<x/>), une chaîne vide reste <x></x> — ce sont deux choses différentes. Si le JSON n'est pas valide, la ligne et la colonne du problème sont indiquées. Copiez le résultat en un clic ou téléchargez-le en fichier .xml.

Cet outil est aussi connu sous le nom de convertir json en xml, json en xml, json to xml, transformer json en xml.

Qu'est-ce que Nom d'élément XML ?

Le nom d'élément est le mot écrit entre les chevrons, qui nomme la donnée : l'élément <prix> porte le nom « prix ». Ses règles sont strictes et sans exception : il commence par une lettre ou un tiret bas, ne contient pas d'espace, ne commence pas par un chiffre et n'accepte ni parenthèse, ni barre oblique, ni signe pourcent. Chiffres, tirets et points sont libres dans la suite du nom : « prix-2024 » est valide, « 2024-prix » ne l'est pas. Les lettres accentuées ne sont pas hors-la-loi ; « quantité » comme « année » sont des noms valides. C'est pourquoi une clé JSON n'a pas toujours besoin d'être adaptée en passant vers XML — mais si elle contient un espace ou commence par un chiffre, l'adaptation est obligatoire.

Qu'est-ce que Élément racine (root element) ?

L'élément racine est l'élément le plus extérieur — et unique — d'un document XML ; toutes les données du document vivent à l'intérieur. Cette règle du sommet unique est formelle, mais ses conséquences sont très concrètes : impossible de coller deux objets l'un sous l'autre et d'appeler cela un fichier XML, il faut un élément qui les enveloppe. JSON n'a pas cette contrainte : un tableau seul est un document valide. Dans la conversion, c'est vous qui écrivez le nom de la racine, parce que le bon nom dépend des données : un document de facture attend « facture », une liste de produits attend « produits », et le système destinataire cherche souvent ce nom précis.

Où la différence entre JSON et XML se voit-elle dans cette conversion ?

La différence se concentre dans trois décisions. D'abord la racine : un JSON commence où il veut, XML exige un seul élément au sommet — c'est pour cela qu'un nom de racine vous est demandé à l'écran. Ensuite les listes : en JSON, le crochet suffit à dire « liste » ; en XML, une liste ne s'exprime que par des éléments frères répétés, il faut donc décider de leur nom, et ce nom conditionne la lisibilité de la sortie. Enfin les types : JSON distingue nombre, texte et booléen ; en XML tout est texte et le type ne vient que d'un schéma externe (XSD) — la différence entre 1024 et "1024" se perd donc dans cette conversion. En contrepartie, XML apporte ce que JSON n'a pas : attributs, espaces de noms et validation par schéma, les outils qui rendent un document officiel. C'est la raison pour laquelle nombre d'intégrations publiques et d'entreprise demandent encore du XML.

Pourquoi devez-vous nommer un élément racine ?

Un JSON peut commencer par un objet ou par un tableau ; XML ne l'accepte pas. Chaque document XML doit avoir un seul élément au sommet — un deuxième élément de tête rend le document invalide. C'est pourquoi, quel que soit votre JSON, tout est placé dans un seul élément dont vous choisissez le nom.

Choisissez ce nom selon l'usage : si le système qui recevra la sortie attend <commandes>, écrivez « commandes » dans la case. Le nom que vous écrivez est lui aussi soumis aux règles des noms d'éléments — « liste de commandes » sortira comme « liste_de_commandes », car un nom XML ne contient pas d'espace.

Le piège des tableaux : XML n'a pas de type « liste »

En JSON, le crochet dit à lui seul « ceci est une liste ». XML n'a aucun signe équivalent ; une liste s'y exprime par des éléments frères portant le même nom, à la suite. La décision la plus discutée de cette conversion est justement là : comment nommer ces éléments frères ?

Les deux options sont courantes : un nom fixe « item » se retrouve identique dans chaque tableau et se lit facilement côté machine ; le singulier du champ parent rend le document lisible pour un humain (« produit » dans « produits »). Si aucun singulier ne peut être déduit du nom, l'outil revient à item, parce que <data><data> induit le lecteur en erreur.

Cela a une conséquence : un tableau à un seul élément, converti en XML puis relu, redevient un objet et non une liste. XML ne porte pas l'information « ceci est toujours une liste » ; elle ne vit que dans un schéma (XSD). Si votre code lit la sortie, prévoyez le cas de l'élément unique.

Les clés invalides ne sont pas cassées en silence

Les règles d'un nom d'élément XML sont strictes et les clés JSON les enfreignent souvent. L'outil adapte le nom, puis annonce dans la ligne de résultat combien de clés ont changé et lesquelles ; vous relisez la sortie sans mauvaise surprise.

  • Nom commençant par un chiffre → un tiret bas devant : « 2024 » → « _2024 » (supprimer le chiffre aurait perdu de l'information)
  • Espace, parenthèse, barre oblique et autres caractères interdits → tiret bas : « prix (EUR) » → « prix__EUR_ »
  • Le deux-points devient aussi un tiret bas : pas de référence à un préfixe d'espace de noms inexistant
  • Les noms commençant par « xml » sont réservés par la norme → un tiret bas est ajouté devant
  • Clé vide (« ») → nommée « alan » ; pour la racine, « root » est utilisé
  • Les lettres accentuées restent telles quelles : « quantité » est un nom d'élément XML valide, il n'est pas adapté

Limites du périmètre : attributs, espaces de noms et schéma

Cet outil traduit le modèle de données du JSON en éléments ; il ne produit pas de lui-même les structures XML qui n'ont pas d'équivalent JSON. Les limites sont écrites noir sur blanc :

  • Aucun attribut n'est produit : chaque clé devient un élément ; pour une sortie comme <produit code="FR-11">, il faut retoucher le XML à la main
  • Aucune déclaration d'espace de noms (xmlns) n'est ajoutée ; si votre document en exige une, écrivez-la vous-même sur l'élément racine
  • Aucun schéma (XSD) ni DTD n'est produit ; la sortie est un XML bien formé, sa « validité » se vérifie ensuite contre le schéma cible
  • Les nombres et les booléens s'écrivent comme du texte : XML ne porte pas de types, la différence entre true et "true" ne vit que dans un schéma
  • Les caractères de contrôle que XML n'accepte jamais sont retirés, et leur nombre est indiqué dans la ligne de résultat

Questions fréquentes

Pourquoi les noms de clés de mon JSON sont-ils modifiés ?

Un nom d'élément XML ne peut pas commencer par un chiffre ni contenir d'espace ou la plupart des signes de ponctuation. Une clé qui enfreint ces règles rendrait le document impossible à analyser si elle était écrite telle quelle. L'outil rend le nom valide et écrit dans la ligne de résultat combien de clés ont changé et comment ; aucune modification n'est faite en silence.

Puis-je produire un XML avec des attributs ?

Non, chaque clé JSON devient un élément. La raison : le JSON n'a pas de notion d'attribut, et seul le schéma cible sait quel champ devrait en devenir un. S'il vous faut des attributs, téléchargez la sortie et retouchez les lignes concernées à la main.

Pourquoi un tableau à un seul élément ne redonne-t-il pas un tableau après conversion ?

En XML, un élément isolé et une liste d'un seul élément se ressemblent trait pour trait ; seule un schéma (XSD) fait la différence, et cette sortie n'en a pas. Si un champ doit rester une liste dans tous les cas, ajoutez cette vérification du côté du code qui lit la sortie.

Le JSON que je colle est-il envoyé à un serveur ?

Non. L'analyse et la production du XML se font entièrement dans votre navigateur ; que vous colliez un fichier client, un relevé de commandes ou une réponse d'API, les données ne quittent pas cette page et ne sont enregistrées nulle part.