Convertissez du JSON en XML bien formé dans votre navigateur. Choisissez le nom de l'élément racine, incluez ou omettez la déclaration XML, et optez pour 2 espaces, 4 espaces ou aucune indentation.
Projetez un arbre JSON sur des éléments, en toute sécurité. Collez du JSON et récupérez un XML bien formé. Les tableaux deviennent des éléments répétés, les noms de clés invalides sont contraints en noms d'éléments légaux, et la déclaration comme l'indentation sont à votre choix.
Sortie XML
Projeter du JSON sur du XML sans perdre la tête
Les deux modèles ne coïncident pas
JSON possède six types de valeurs — objet, tableau, chaîne, nombre, booléen et null — et chacun est auto-descriptif. XML n'a qu'une seule primitive : le texte. Tout le reste est une structure construite à partir d'éléments et d'attributs. Il n'existe aucune correspondance officielle entre les deux, c'est pourquoi chaque convertisseur que vous rencontrez se comporte un peu différemment.
La convention utilisée ici est la plus courante et la plus prévisible. Un objet devient un élément dont les enfants sont ses clés. Une chaîne, un nombre ou un booléen devient un élément contenant sa forme texte. null devient un élément vide. Il reste les tableaux, qui n'ont aucun équivalent en XML : la solution habituelle consiste à répéter l'élément parent une fois par élément, si bien que {"item": [1, 2]} devient <item>1</item><item>2</item> plutôt que d'inventer un élément enveloppe que le schéma receveur n'attendra pas.
Toute clé JSON n'est pas un nom d'élément légal
Les noms d'éléments XML suivent la production NCName : ils commencent par une lettre ou un souligné, puis autorisent lettres, chiffres, tirets, points et soulignés. Pas d'espaces, pas de barres obliques, pas de chiffre en tête, et rien ne commence par les lettres xml quelle que soit la casse, réservées par la spécification.
Les clés JSON n'ont pas cette restriction — ce sont des chaînes arbitraires, et les charges utiles réelles regorgent de "user name", "2024" et "@type". Les émettre telles quelles produit un document qu'aucun analyseur n'acceptera. Les caractères illégaux sont donc remplacés par des soulignés et un souligné en tête est ajouté quand un nom commence par un chiffre. C'est une étape avec perte, aussi si les noms d'éléments comptent en aval, renommez les clés dans le JSON d'abord plutôt que de laisser le convertisseur deviner.
Déclaration, indentation et ce qu'il est sûr de modifier
La déclaration <?xml ... ?> est optionnelle pour les documents UTF-8 ; les analyseurs supposent l'UTF-8 quand elle est absente. Incluez-la quand le fichier sera écrit sur disque, servi via HTTP ou confié à un pipeline d'entreprise strict, et omettez-la quand le fragment est intégré dans un document plus large, où une seconde déclaration est une erreur fatale.
L'indentation est le choix le plus subtil. Contrairement à JSON, l'espacement à l'intérieur d'un élément XML fait partie du contenu, aussi le pretty-print modifie techniquement le document : un élément qui contenait Ada contient désormais un saut de ligne, des espaces, Ada, un saut de ligne et d'autres espaces. La plupart des schémas l'ignorent, mais la vérification de signature, les sections xml:space="preserve" et les formats sensibles à l'espacement ne l'ignorent pas. Utilisez l'indentation quand vous lisez, et passez à une sortie minifiée pour tout ce qu'une machine consommera.
FAQ
Mon JSON est-il téléversé quelque part ?
Non. Le document est analysé et sérialisé entièrement dans votre navigateur via les fonctions JSON natives, rien n'est donc envoyé à un serveur.
Comment les tableaux JSON sont-ils représentés ?
En répétant l'élément parent une fois par élément. {"item": [1, 2]} devient <item>1</item><item>2</item>, ce qui est la convention attendue par la plupart des schémas XML.
Que deviennent les clés qui ne sont pas des noms d'éléments valides ?
Les caractères illégaux deviennent des soulignés et un souligné en tête est ajouté si le nom commence par un chiffre. Renommez d'abord les clés si les noms exacts comptent.
Pourquoi ma sortie ne contient-elle pas la déclaration XML ?
Elle est optionnelle et contrôlée par une case à cocher. Les analyseurs utilisent l'UTF-8 par défaut sans elle, et elle doit être omise quand la sortie est intégrée dans un autre document.
Les valeurs sont-elles écrites comme attributs ?
Non. Chaque valeur devient du texte d'élément. Les attributs ne peuvent pas être inférés d'un JSON simple, aussi les choisir nécessiterait un schéma que cet outil ne possède pas.
L'indentation change-t-elle le sens du document ?
Techniquement oui, car l'espacement à l'intérieur d'un élément est un contenu. La plupart des schémas l'ignorent, mais utilisez une sortie minifiée pour un XML signé ou sensible à l'espacement.