XML to JSON Converter
Convert XML data or files to JSON format instantly in your browser. Supports custom indentation and handles nested structures.
Select XML file
or drag and drop here
Convert XML data or files to JSON format instantly in your browser. Supports custom indentation and handles nested structures.
or drag and drop here
XML et JSON sont tous deux des formats d'échange de données mais proviennent d'époques différentes du Web. XML, standardisé en 1998, a été conçu comme un format de balisage auto-descriptif avec des attributs, des espaces de noms et une validation de schéma. JSON est apparu au début des années 2000 comme un format plus léger, mieux adapté aux environnements d'exécution JavaScript et aux API modernes. La plupart des nouvelles API Web parlent JSON ; de nombreux systèmes plus anciens (services SOAP, flux RSS, fichiers de configuration, intégrations d'entreprise) produisent encore du XML. La conversion entre eux est l’une des tâches d’interopérabilité les plus courantes dans le développement moderne.
La conversion ne se fait pas parfaitement sans perte car les deux formats ont des puissances d'expression différentes. XML possède des attributs (ce que JSON n'a pas nativement), fait la distinction entre le contenu du texte et les noms d'éléments et prend en charge le contenu mixte (éléments contenant à la fois du texte et des éléments enfants). Le modèle objet/tableau simple de JSON ne peut pas représenter directement ces fonctionnalités, c'est pourquoi les convertisseurs appliquent des conventions : les attributs deviennent des clés avec préfixe @, le contenu du texte devient une clé #text, et ainsi de suite.
Ce convertisseur analyse XML à l'aide du DOMParser intégré au navigateur et parcourt l'arborescence DOM résultante pour produire du JSON. Les éléments portant le même nom de balise que les frères et sœurs sont rassemblés dans des tableaux ; les attributs vont dans des clés spéciales ; les espaces de noms et les instructions de traitement sont conservés lorsqu’ils sont présents. Le résultat est un JSON lisible par l’homme qui revient raisonnablement au XML.
La plupart des codes d’application modernes sont plus à l’aise avec JSON. JavaScript analyse JSON de manière native, le module json de Python se trouve dans la bibliothèque standard et pratiquement tous les autres langages disposent d'un support JSON équivalent de première classe. Le traitement XML nécessite l'importation de bibliothèques supplémentaires et l'écriture de davantage de passe-partout. La conversion du XML entrant en JSON avant le traitement est souvent le chemin le plus rapide depuis le flux XML externe vers la structure de données interne.
Les outils s'appuient également sur JSON. Les embellisseurs, validateurs, validateurs de schéma, langages de requête (jq, JSONPath) et visualiseurs JSON sont nombreux ; les équivalents XML sont moins nombreux et souvent plus anciens. Travailler en JSON ouvre un écosystème d’outils plus riche.
Collez XML, obtenez JSON.
DOMParser produit un DOM XML identique à celui utilisé par le navigateur pour les pages XHTML. Le convertisseur parcourt ce DOM de manière récursive. Pour chaque élément, il crée un objet JSON : les attributs deviennent des clés préfixées par @ (par exemple, @id, @class) ; les éléments enfants de l'élément sont récurrés dans la même structure ; le contenu textuel, lorsqu'il est présent aux côtés des enfants, vit sous une clé #text.
Les éléments enfants répétés portant le même nom de balise sont collectés dans un tableau JSON. Un seul enfant d'un nom donné apparaît comme valeur d'objet ; plusieurs enfants apparaissent sous la forme d'un tableau d'objets. Cette convention fonctionne bien dans la pratique, mais signifie que la forme JSON dépend du fait que les éléments apparaissent une ou plusieurs fois – une imperfection connue du mappage XML vers JSON.
Les espaces de noms sont conservés dans le cadre des noms d'éléments (préfixe : localName). Les instructions de traitement et les sections CDATA sont converties en contenu texte. Les déclarations XML et les DOCTYPE sont supprimés de la sortie JSON mais n'affectent pas les données.