Convertisseur XML ⇄ JSON
XML ↔ JSON bidirectionnel avec gestion d'attributs, préservation CDATA, BOM, fin de ligne et indentation
Entrée
Sortie
Convertisseur XML ⇄ JSON
XML ↔ JSON bidirectionnel avec gestion d'attributs, préservation CDATA, BOM, fin de ligne et indentation
Fonctionnalités
- Mode auto-détection détecte si le texte collé est XML ou JSON et lance la conversion dans l'autre sens — collez n'importe quel côté sans changer de mode manuellement
- Deux stratégies d'attributs : mode Préfixe émet les attributs XML avec un préfixe configurable (par défaut `@`) comme clés JSON soeurs ; mode Objet les collecte dans un objet `$` séparé, donc texte d'élément et attributs ne se collisionnent jamais
- Gestion CDATA et nœuds texte : avec « Traiter CDATA/Texte comme #text » activé, le contenu textuel d'élément est replié dans une propriété `#text` ; le contenu mixte survit au round-trip JSON ; désactivé préserve la distinction structurelle
- Bascule pretty-print avec indentation sélectionnable (2 / 4 / 8 espaces) pour sortie JSON et XML — activé pour lecture humaine, désactivé pour transport compact
- Contrôle fin de ligne (LF vs CRLF) pour compatibilité Unix vs Windows, plus bascule UTF-8 BOM optionnelle pour systèmes exigeant le BOM
- Préfixe d'attribut configurable pour matcher les conventions aval : `@` (par défaut), `_`, `xml:` ou toute autre chaîne — garde la sortie convertie drop-in compatible avec votre pipeline existant
- Copier et Télécharger (`converted.txt`) en un clic pour la sortie ; les erreurs de conversion sont remontées inline avec le message du parser sous-jacent — vous savez si le XML était malformé ou si le JSON n'était pas représentable en XML
- Purement côté client : parsing via DOMParser pour XML et JSON.parse pour JSON. Pas d'appels réseau, fonctionne hors-ligne après mise en cache de la page
Mode d'emploi
- Collez votre XML ou JSON dans le volet Entrée. Avec Mode sur Auto-détection, le convertisseur détecte le format automatiquement.
- Ajustez la bascule Pretty et la taille d'indentation pour contrôler le formatage ; basculez Fin de ligne entre LF et CRLF selon votre outil aval.
- Ouvrez Paramètres avancés pour choisir le Mode d'attribut (Préfixe ou Objet), définir le Préfixe d'attribut et basculer CDATA/Texte-#text.
- Cliquez Convertir. Le volet Sortie affiche le résultat ; la conversion tourne dans votre navigateur via DOMParser + JSON.parse.
- Utilisez Copier pour le presse-papiers, ou Télécharger pour sauvegarder en `converted.txt`.
- Si le parsing échoue, une ligne d'erreur inline montre le message sous-jacent — corrigez l'entrée et reconvertissez.
Conseils et bonnes pratiques
- Pour déboguer une charge XML d'un service SOAP, Auto-détection + mode attribut Objet + CDATA-#text donne la vue JSON la plus propre.
- Réglez Fin de ligne sur CRLF et activez le BOM pour générer une sortie destinée à des outils Windows legacy.
- Passez le préfixe d'attribut de `@` à `_` si vos consommateurs JSON rejettent les clés commençant par `@` (certains parsers dérivés de YAML le font).
- Si la sortie JSON-vers-XML met les éléments dans le mauvais ordre, réinsérez vos clés top-level dans la source JSON dans l'ordre voulu.
- Combinez avec JSON Formatter pour inspecter ou transformer plus loin le JSON converti ; XML Formatter du côté XML.
FAQ
Comment le Mode d'attribut change-t-il la sortie JSON ?
En mode Préfixe, les attributs XML apparaissent comme clés soeurs avec le préfixe configuré — `<user id="42"/>` devient `{ "user": { "@id": "42" } }`. En mode Objet, les attributs sont collectés sous une seule clé `$`, donc contenu d'élément et contenu d'attribut ne partagent pas d'espace de noms. Choisissez Préfixe quand les consommateurs attendent des clés plates ; choisissez Objet quand vous devez round-tripper sans ambiguïté.
À quoi sert CDATA-comme-#text ?
XML a deux façons de porter du texte — `<a>plain</a>` et `<a><![CDATA[plain]]></a>`. Quand l'option est active, les deux formes s'effondrent en une clé `#text` en JSON ; le contenu mixte comme `<p>Hello <b>world</b></p>` survit au round-trip. Désactivé garde la distinction structurelle ; utile quand les marqueurs CDATA originaux sont sémantiquement significatifs (ex. scripts embarqués).
Pourquoi la bascule BOM compte-t-elle ?
Certains outils Windows (Excel, PowerShell ancien, .NET TextReader sans encodage explicite) attendent un BOM UTF-8 (`EF BB BF`) au début pour détecter l'encodage. Les outils web modernes et les pipelines Unix traitent généralement le BOM comme bruit. Activez la bascule pour un outil Windows BOM-conscient, désactivez sinon.
Pourquoi LF vs CRLF ?
Les outils Windows et anciens formats Microsoft attendent `\r\n` (CRLF) ; Unix/Linux/macOS utilisent `\n` (LF) par défaut. Git normalise habituellement les deux, mais les artefacts qui contournent git (téléchargements, collages dans Notepad, sorties de build) ont besoin du choix explicite. Le parser auto-détection ignore les fins de ligne ; ce contrôle n'affecte que la sortie.
Les namespaces survivent-ils à la conversion ?
Les noms d'éléments et attributs préfixés par namespace round-trippent comme chaînes littérales (ex. `xmlns:soap` devient la clé `@xmlns:soap`). Le convertisseur ne résout pas les namespaces contre des URIs — si votre pipeline aval a besoin de résolution de namespace, faites cette étape à part. Le round-trip vers XML préserve les préfixes initiaux.
Que deviennent les éléments vides ?
Un élément XML vide `<a/>` devient `{ "a": null }` en JSON (ou `{ "a": "" }` si c'était `<a></a>` avec texte vide et CDATA-#text activé). En allant de JSON à XML, une valeur `null` émet un élément auto-fermant. Le round-trip est stable tant que vous ne basculez pas CDATA-#text entre les deux directions.
Pourquoi ma sortie JSON-vers-XML a-t-elle des clés ordonnées ?
Les éléments XML ont un ordre défini ; les objets JavaScript préservent l'ordre d'insertion pour les clés chaîne, donc le convertisseur écrit les éléments dans l'ordre où leurs clés apparaissaient dans le JSON. Si le JSON vient d'un round-trip JSON.parse, l'ordre matche la source ; construit programmatiquement, contrôlez l'ordre en insérant les clés dans la séquence voulue.
Les gros documents sont-ils sûrs à convertir ici ?
Des documents de quelques mégaoctets convertissent bien en moins d'une seconde. Très gros documents (>10 Mo) fonctionnent mais épinglent le thread UI pendant le parse ; pour cette charge, exécutez la même logique dans un Web Worker ou un script de build. Le service de conversion est le même dans les deux contextes.