Qu'est-ce que la conversion XML ↔ JSON ?
XML (Extensible Markup Language) est un format texte à balises pour les données hiérarchiques. On le rencontre dans les services web SOAP, les flux RSS et Atom, les dossiers médicaux HL7 FHIR, les fichiers sitemap.xml et les fichiers de configuration livrés avec Maven, Spring et Android Gradle. JSON (JavaScript Object Notation, défini par la RFC 8259) décrit le même type de données imbriquées, mais avec des accolades et des tableaux plutôt que des balises ouvrantes et fermantes. JSON est ce que presque toutes les API REST parlent aujourd'hui, et c'est la forme de valeur native de chaque runtime navigateur. Convertir entre les deux formats est l'un de ces travaux qui paraît trivial jusqu'à ce que vous rencontriez des attributs, du contenu mixte, des enfants répétés et du CDATA. Un regex personnalisé est la mauvaise réponse ; un vrai analyseur est la bonne. Cet outil embarque un vrai analyseur (fast-xml-parser) et l'exécute dans votre navigateur, de sorte que vous pouvez coller une enveloppe XML retournée par un service SOAP ancien et la voir devenir un objet JSON que vous pouvez déposer directement dans un store Redux, ou prendre une charge utile JSON assemblée dans un client REST et la retransformer en la forme XML qu'un endpoint d'entreprise attend encore.
Comment fonctionne le mapping XML ↔ JSON ?
Chaque conversion s'exécute localement dans votre navigateur en utilisant la bibliothèque fast-xml-parser embarquée (MIT, version 4.x). Les règles de mapping de haut niveau sont :
- Élément vers clé : chaque nom d'élément XML devient une clé d'objet JSON.
<user><name>Alice</name></user>correspond à{"user":{"name":"Alice"}}. - Attribut vers clé préfixée : un attribut est stocké sous une clé formée en ajoutant le préfixe choisi. Avec le préfixe
@,<user id="1">produit{"user":{"@id":"1"}}. - Contenu texte vers clé de nœud texte : quand un élément a à la fois des attributs et du texte, le texte atterrit sous la clé de nœud texte choisie.
<price currency="USD">9.99</price>avec la clé#textproduit{"price":{"@currency":"USD","#text":"9.99"}}. - Enfants répétés vers tableau : quand Forcer tableau pour les balises enfants répétées est activé, plusieurs éléments frères portant le même nom se regroupent dans un tableau JSON.
<items><item>A</item><item>B</item></items>devient{"items":{"item":["A","B"]}}. - Sections CDATA : le texte brut dans
<![CDATA[…]]>est préservé sous la clé#cdatade sorte que les chevrons et les esperluettes ne soient pas ré-échappés lors de l'aller-retour. - JSON vers XML inverse le mapping : les clés d'objet deviennent des éléments, les clés préfixées deviennent des attributs, et les tableaux se développent en éléments frères répétés.
Pourquoi convertir XML et JSON avec cet outil ?
- Vos données restent sur votre machine. Chaque analyse et chaque construction s'exécute dans le contexte JavaScript de cette page. Les bundles FHIR de patients, les enveloppes d'authentification SOAP, les fichiers de configuration propriétaires, les exports de facturation — rien de tout cela ne touche nos serveurs, car il n'y a pas d'étape d'envoi dans le chemin de code. Ouvrez le panneau réseau et observez.
- SOAP ancien dans un front-end REST-first est la demande la plus courante. Une banque ou un assureur expose un endpoint SOAP qui ne sera pas retraité avant des années ; l'application React ou Vue qui l'appelle ne veut pas apprendre le XML. Collez l'enveloppe, récupérez le JSON avec les attributs préfixés et les espaces de noms préservés, déposez le contenu
Bodydans votre store d'état. - Les consommateurs RSS, Atom et sitemap en bénéficient aussi. Un répertoire de podcasts, un agrégateur d'actualités ou un tableau de bord interne qui ingère
sitemap.xmlpeut éviter d'écrire un analyseur XML entier. Convertissez le flux une fois, travaillez avec le tableau JSON, et le code client reste dans le langage qu'il parle déjà. - L'export de configuration complète la liste. Maven, Spring, Android Gradle et les vieux builds Ant émettent du XML ; l'outillage cloud-native de l'autre côté (Terraform, Ansible, GitHub Actions, cloud-init) lit du JSON ou du YAML. Convertissez dans le navigateur plutôt que d'exécuter un script Python avec une dépendance tierce, particulièrement utile dans les environnements isolés où coller dans un service web inconnu est exclu.
Quelles sont les applications courantes de la conversion XML ↔ JSON ?
La conversion entre XML et JSON intervient dans l'ingénierie d'intégration, l'outillage d'API et l'ingénierie des données. Quelques patterns dominent la charge de travail :
- Bridging SOAP vers REST : extraire la charge utile
Bodyd'une enveloppe SOAP retournée par une API bancaire ou d'assurance ancienne et la convertir en JSON pour qu'un front-end React ou Vue puisse la consommer sans couche proxy côté serveur devant. - Dossiers médicaux FHIR : convertir des bundles XML HL7 FHIR (le format exigé par HHS/ONC et NHS Digital pour l'échange de données cliniques) en JSON pour les charger dans une collection MongoDB Atlas ou une colonne PostgreSQL JSONB où les analystes peuvent les interroger.
- Traitement de sitemap et de flux : transformer un
sitemap.xmlou un flux RSS/Atom en tableau JSON pour qu'un indexeur personnalisé, un bot Slack ou un widget de tableau de bord puisse itérer sur les entrées sans avoir à intégrer un analyseur XML comme dépendance.
À quoi ressemble un aller-retour XML ↔ JSON ?
Prenons un petit exemple. Collez <user id="1"><name>Alice</name></user> dans la saisie, réglez le préfixe d'attribut sur @, laissez le mode sur XML vers JSON et appuyez sur Convertir. La sortie est {"user":{"@id":"1","name":"Alice"}}. Passez le mode sur JSON vers XML, recollez ce JSON, réglez l'indentation sur 2 espaces et appuyez de nouveau sur Convertir. Vous obtenez <user id="1">\n <name>Alice</name>\n</user>, structurellement identique à l'original. La seule chose non garantie à travers l'aller-retour est l'ordre des attributs, car les clés d'objet JSON sont non ordonnées par spécification.
Ce convertisseur XML ↔ JSON embarque fast-xml-parser@4 au même origin, gère les attributs, le CDATA, les balises enfants répétées et les préfixes d'espaces de noms, et continue de fonctionner hors ligne une fois la page chargée. Aucun envoi, aucun proxy CDN, aucune balise analytique, aucune télémétrie d'aucune sorte. Chaque octet de saisie et de sortie reste dans votre navigateur, ce qui est exactement ce que vous voulez quand la charge utile s'avère être un bundle FHIR de patient, une enveloppe d'authentification SOAP ou toute autre forme de données que personne en dehors de votre équipe ne devrait jamais voir.