Convertir un fichier XML en JSON

Fonctionne sur votre appareil · Votre fichier ne quitte jamais votre appareil.

Déposez un fichier .xml ou collez du XML venant d’une API, d’un flux ou d’un fichier de configuration, et obtenez du JSON exploitable. Le document est lu par l’analyseur XML du navigateur lui-même, dans l’encodage que déclare sa première ligne : tout ce qui est bien formé se convertit, et un fichier mal formé est signalé avec la ligne et la colonne du problème, et ce qui ne va pas à cet endroit.

La correspondance est fixe et réversible : chaque élément devient une clé ; des frères portant le même nom deviennent un tableau ; les attributs sont conservés sous des clés commençant par @ (id="A3" devient "@id": "A3") ; et quand un élément contient à la fois du texte et des enfants ou des attributs, le texte va sous "#text". Un élément qui ne contient que du texte devient directement cette valeur.

Avec la détection des types activée, un texte comme 12, true ou un élément vide devient un nombre, un booléen ou null ; désactivez-la pour tout garder en texte. Les noms avec espace de noms (soap:Body) sont conservés tels quels. L’aperçu montre les 200 premières lignes avant le téléchargement.

Comment Convertir un fichier XML en JSON

  1. Déposez un fichier XML, ou collez le XML dans la zone.
  2. Décidez si les nombres, booléens et éléments vides doivent être typés.
  3. Cliquez sur « Convertir en JSON » et vérifiez l’aperçu.
  4. Téléchargez le .json.

Formats pris en charge et limites

Entrée
XML (.xml) – fichier ou texte collé, dans l’encodage qu’il déclare
Sortie
JSON indenté, UTF-8
Attributs
Conservés sous des clés "@nom"
Éléments répétés
Deviennent un tableau
Où ça tourne
Dans votre navigateur – rien n’est envoyé

Ne convient pas pour : Les documents qui ne sont pas du XML bien formé (balises non fermées, pages HTML) – l’analyseur signale le premier problème au lieu de deviner.

Quelles valeurs changent de type

La détection des types s’applique aux attributs comme au texte, et ne change une valeur que là où rien n’est perdu. Activée, elle transforme id="3" en "@id": 3, tandis que id="007" reste le texte "007". 1.50 reste lui aussi du texte, car en nombre il serait réécrit 1.5. TRUE devient true. Un élément vide comme <note/>, ou qui ne contient que des espaces, devient null ; le mot NULL reste du texte. Les dates comme 2024-01-05 ne sont jamais converties.

Avec la détection désactivée, les éléments vides deviennent "" et chaque valeur reste du texte, exactement telle qu’elle est écrite.

Ce que le JSON ne peut pas garder

Certaines parties d’un document XML n’ont pas de place en JSON et sont abandonnées : les commentaires, les instructions de traitement et le DOCTYPE. Les sections CDATA deviennent du texte ordinaire : <a><![CDATA[<b>x</b>]]></a> donne "a": "<b>x</b>".

L’ordre entre des éléments de noms différents est perdu, car chaque nom devient une seule clé. Dans <step>1</step><note/><step>2</step>, les deux step sont regroupés dans "step": [1, 2], et rien ne retient que la note se trouvait entre eux. Le texte mêlé de balises perd sa place de la même façon : <p>Bonjour <b>le monde</b> et <i>vous</i> !</p> donne "b": "le monde", "i": "vous" et "#text": "Bonjour et !". Pour les documents où cet ordre fait le contenu, comme de la prose mise en forme, cette correspondance ne convient pas.

Espaces de noms, entités, erreurs et encodages

Les noms préfixés sont gardés tels qu’ils sont écrits, et les déclarations d’espaces de noms apparaissent comme des attributs : <soap:Envelope xmlns:soap="…"> donne une clé "soap:Envelope" qui contient "@xmlns:soap", et /json-to-xml retransforme les deux en le même XML.

En dehors des entités que définit le DOCTYPE du document lui-même, seules les cinq entités intégrées à XML (&amp; &lt; &gt; &quot; &apos;) et les entités numériques comme &#160; sont comprises. Quand l’analyseur s’arrête, le message donne la ligne et la colonne et dit en mots simples ce qui ne va pas : un élément fermé sous un autre nom, un nom inconnu comme &nbsp; (écrivez &#160; à la place), un & ou un < isolé, un deuxième élément au sommet, ou un fichier qui se termine trop tôt.

Le fichier est lu dans l’encodage que déclare sa première ligne, comme ISO-8859-1 ou windows-1256. Sans déclaration, il est lu en UTF-8 ou en UTF-16, et les anciennes pages de codes sont reconnues comme l’explique /csv-to-json.

Questions fréquentes

Mes fichiers sont-ils envoyés sur un serveur ?
Non. La conversion se fait entièrement dans votre navigateur, avec la puissance de votre propre appareil. Le fichier ne quitte pas votre ordinateur ni votre téléphone. Et une fois qu’un outil a servi une première fois, il continue de fonctionner sans connexion (la vidéo, la reconnaissance de texte et la suppression d’arrière-plan téléchargent leur moteur depuis ce site la première fois).
Comment sont traités les attributs et le contenu mixte ?
Les attributs deviennent des clés préfixées par @ : <item id="A3"> donne "@id": "A3". Si un élément contient du texte en plus d’attributs ou d’éléments enfants, le texte est rangé sous "#text" ; un élément qui ne contient que du texte devient directement ce texte.
Pourquoi un élément devient-il un objet et les éléments répétés un tableau ?
Un élément qui n’apparaît qu’une fois sous son parent devient un objet (ou une valeur) ; deux frères ou plus portant le même nom deviennent un tableau. Cela reflète exactement le document : une liste d’un seul élément est donc un objet – si votre code a besoin d’un tableau dans les deux cas, enveloppez-le à la réception.
À quoi ressemble le haut du JSON ?
Une seule clé portant le nom de l’élément racine, qui contient tout le reste – <records>…</records> devient {"records": {...}}. Le nom de la racine est ainsi conservé, et l’outil JSON en XML peut reconstruire le même document.

Outils associés

Plus dans Tableurs et données

Cette page dans d’autres langues: English · العربية · Deutsch · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা