Convertisseur XML vers JSON
Collez du XML, obtenez du JSON instantanément. Convertit les attributs en clés @_, gère les éléments répétés comme des tableaux. 100 % dans le navigateur, rien n'est envoyé, sans inscription.
Options · 2 espaces · XML → JSON
Qu'est-ce que la Conversion XML vers JSON et Comment Fonctionne-t-elle ?
XML (Extensible Markup Language) et JSON (JavaScript Object Notation) sont tous deux des formats de données structurées, mais ils ont des modèles fondamentalement différents : XML est un arbre d'éléments avec des attributs et du contenu mixte (texte entremêlé avec des éléments enfants) ; JSON est un arbre d'objets, de tableaux, de chaînes, de nombres, de booléens et de valeurs null. La conversion entre eux nécessite un ensemble de conventions pour combler cette inadéquation.
Cet outil utilise la convention la plus largement adoptée, la même que celle utilisée par des bibliothèques populaires comme fast-xml-parser (Node.js), xmltodict (Python) et JAXB (Java) :
**1. Attributs → préfixe @_.** Les attributs XML n'ont pas d'équivalent JSON direct. La convention est de les représenter comme des clés préfixées par @_. Ainsi
**2. Contenu textuel avec attributs → #text.** Quand un élément a à la fois des attributs et du contenu textuel —
**3. Éléments frères répétés → tableaux.** XML permet plusieurs éléments enfants du même nom ; les objets JSON ne peuvent pas avoir de clés en double. La solution est de regrouper les frères du même nom dans un tableau. Un enfant
**4. Aucune coercition de type — toutes les valeurs restent des chaînes.** XML n'a pas de système de type natif pour le contenu textuel. Une valeur "123" en XML est une chaîne. La convertir en nombre JSON 123 nécessite de formuler une hypothèse sur l'intention de l'auteur — une hypothèse incorrecte pour les codes postaux ("01234" → 1234), les numéros de téléphone, les identifiants avec remplissage et les chaînes décimales sensibles à la précision. Cet outil préserve toutes les valeurs comme des chaînes. Appliquez la coercition de type dans votre propre code pour les champs où vous connaissez le type.
**5. Avec perte pour les commentaires, instructions de traitement et espaces de noms.** XML prend en charge des fonctionnalités que JSON ne supporte pas : les commentaires (), les instructions de traitement (), et la sémantique des espaces de noms. Celles-ci sont supprimées ou approximées lors de la conversion. Pour un travail XML sans perte — reformatage, minification, validation — utilisez le Formateur XML à la place. Pour la conversion inverse — construire du XML à partir de JSON — utilisez le Convertisseur JSON vers XML.
**Pourquoi convertir du XML en JSON ?** JSON est le format natif de JavaScript et le format d'échange par défaut pour les API REST. Si vous recevez du XML d'un service SOAP hérité, d'un flux RSS, d'un sitemap ou d'un système d'entreprise, le convertir en JSON vous permet de travailler avec les données en utilisant l'accès aux objets JavaScript standard, les requêtes JSON path et tout magasin de données ou API compatible JSON. La conversion est un pont à sens unique : utile pour consommer des données XML dans une pile moderne, mais pas pour préserver ou faire des allers-retours avec des documents XML.
// Convert XML to JSON in Node.js using fast-xml-parser
import { XMLParser } from 'fast-xml-parser';
const xml = `<catalog>
<product id="P01">
<name>Wireless Headphones</name>
<price currency="USD">79.99</price>
</product>
</catalog>`;
const parser = new XMLParser({
ignoreAttributes: false, // preserve attributes
attributeNamePrefix: '@_', // @_ prefix for attributes
textNodeName: '#text', // #text for mixed element content
parseAttributeValue: false, // no type coercion on attributes
parseTagValue: false, // no type coercion on element text
});
const result = parser.parse(xml);
console.log(JSON.stringify(result, null, 2));
// {
// "catalog": {
// "product": {
// "@_id": "P01",
// "name": "Wireless Headphones",
// "price": {
// "@_currency": "USD",
// "#text": "79.99"
// }
// }
// }
// } Fonctionnalités clés
Conversion en direct
La sortie JSON se met à jour instantanément au fil de la saisie ou du collage de XML — sans bouton Convertir. Les grandes entrées (>200 Ko) passent automatiquement en mode manuel pour maintenir la réactivité du navigateur.
Convention de préfixe @_ pour les attributs
Les attributs XML deviennent des clés JSON préfixées par @_, suivant la convention fast-xml-parser et xmltodict.
Détection automatique des tableaux pour les éléments répétés
Les éléments frères du même nom deviennent automatiquement un tableau JSON. Un
Aucune coercition de type — les valeurs restent des chaînes
Toutes les valeurs XML sont préservées comme des chaînes JSON. Les zéros initiaux, les numéros de téléphone, les codes avec remplissage et les chaînes ressemblant à des booléens comme "true" ou "false" ne sont jamais silencieusement convertis en nombres ou booléens.
Confidentialité 100 % basée sur le navigateur
Toute la conversion s'exécute localement dans votre navigateur en JavaScript. Votre XML — dont les identifiants, les configurations internes et les charges utiles sensibles — n'est jamais envoyé à un serveur, jamais journalisé ni stocké.
Signalement des erreurs de bonne formation
Si votre XML n'est pas bien formé, l'outil signale le numéro de ligne et de colonne exact de la première erreur, vous permettant de localiser et corriger le problème immédiatement avant de convertir.
Exemples
Fichier de Configuration
<?xml version="1.0" encoding="UTF-8"?>
<appConfig version="2.1" env="production">
<database>
<host>db.example.com</host>
<port>5432</port>
<name>myapp_prod</name>
<pool max="10" min="2"/>
</database>
<cache enabled="true">
<ttl>3600</ttl>
<driver>redis</driver>
</cache>
</appConfig> Une petite configuration d'application avec des attributs et des éléments imbriqués. Les attributs deviennent des clés préfixées par @_ dans la sortie JSON : version="2.1" devient "@_version": "2.1" sous appConfig, et les attributs max et min de l'élément pool deviennent "@_max": "10" et "@_min": "2". Toutes les valeurs — dont port et ttl — restent des chaînes, pas des nombres, car le convertisseur n'effectue aucune coercition de type.
Fragment de Sitemap
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://go-tools.org/tools/xml-to-json</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://go-tools.org/tools/json-to-xml</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset> Un fragment de sitemap.xml à deux URL. Comme il y a deux éléments
Élément RSS
<item> <title>XML to JSON: A Practical Guide</title> <link>https://go-tools.org/blog/xml-to-json-guide</link> <pubDate>Thu, 29 May 2026 00:00:00 GMT</pubDate> <category>Developer Tools</category> <description>Learn how XML attributes map to @_ keys, how repeated elements become arrays, and why values stay strings in any XML-to-JSON conversion.</description> <guid isPermaLink="true">https://go-tools.org/blog/xml-to-json-guide</guid> </item>
Un élément RSS 2.0. L'élément guid possède un attribut isPermaLink, donc la sortie JSON pour guid devient un objet avec "@_isPermaLink": "true" et "#text": "https://go-tools.org/blog/xml-to-json-guide" — l'attribut et le contenu textuel de l'élément coexistent comme clés sœurs. Tous les autres éléments n'ont que du contenu textuel et se convertissent directement en valeurs de chaîne.
Comment utiliser
- 1
Collez votre XML
Saisissez ou collez votre XML dans le champ de saisie ci-dessus. Vous pouvez aussi cliquer sur « Charger un exemple » pour essayer un échantillon — un fichier de configuration, un fragment de sitemap ou un élément RSS.
- 2
Consultez la sortie JSON en direct
Le JSON apparaît instantanément dans le panneau de sortie. Les attributs deviennent des clés préfixées par @_, le contenu textuel des éléments mixtes devient #text, et les éléments frères répétés deviennent des tableaux. Ajustez l'indentation (2 ou 4 espaces) selon vos besoins.
- 3
Copiez ou téléchargez
Cliquez sur Copier pour récupérer le JSON dans votre presse-papiers, ou sur Télécharger pour le sauvegarder en fichier .json prêt pour votre application, API ou pipeline de données.
Pièges courants de conversion
Oublier que les valeurs restent des chaînes
Le convertisseur n'effectue aucune coercition de type. Si votre code cible attend des nombres JSON mais que le XML contient des chaînes numériques, vous devez les coercer explicitement après la conversion. Se fier à la coercition implicite chaîne-vers-nombre (l'opérateur == de JavaScript ou les opérateurs arithmétiques) est source d'erreurs — utilisez toujours parseInt(), parseFloat() ou Number() délibérément.
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" } ← string, not number
// Dangerous: comparing as-is
if (config.timeout > 25) { ... } // "30" > 25 coerces, but fragile // XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }
// Safe: explicit coercion where you know the type
if (parseInt(config.timeout, 10) > 25) { ... } Inadéquation entre élément unique et forme tableau
Quand il n'y a qu'un seul élément
// XML with one item: <root><item>a</item></root>
// JSON: { "root": { "item": "a" } } ← string, not array
result.root.item.forEach(i => console.log(i)); // TypeError: not a function // Normalize to array regardless of count const items = [].concat(result.root?.item ?? []); items.forEach(i => console.log(i)); // safe for 0, 1, or many
Contenu mixte : texte et clé #text
Quand un élément a à la fois des attributs et du contenu textuel, le texte va sous #text. Accéder à la valeur textuelle comme si c'était une chaîne simple retournera un objet à la place. Vérifiez toujours si la valeur d'un élément est une chaîne ou un objet avec une clé #text quand des attributs sont possibles.
// XML: <price currency="USD">29.99</price>
// JSON: { "price": { "@_currency": "USD", "#text": "29.99" } }
const amount = result.price; // { "@_currency": "USD", "#text": "29.99" }, not "29.99" // Handle both plain string and @_/#text object const raw = result.price; const amount = typeof raw === 'object' ? raw['#text'] : raw; // "29.99"
Entrée XML non bien formée
Le convertisseur requiert du XML bien formé. Causes courantes d'erreurs de bonne formation : & non échappé dans le contenu textuel (utilisez &), balises non correspondantes (
<!-- Unescaped & — well-formedness error --> <query>name = 'Alice' & role = 'admin'</query>
<!-- Escaped & — valid XML --> <query>name = 'Alice' & role = 'admin'</query>
Valeurs avec zéro initial corrompues par coercition
Cet outil préserve les zéros initiaux car il n'effectue aucune coercition de type. Si vous post-traitez le JSON avec une bibliothèque qui effectue de la coercition (certains validateurs de schéma JSON, mappeurs ORM), le zéro initial peut être perdu. Déclarez toujours le type du champ explicitement comme chaîne dans votre schéma.
// XML: <zipCode>01234</zipCode>
// This tool outputs: { "zipCode": "01234" } ← correct
// But if a downstream schema coerces:
// { zipCode: z.number() } → 1234 ← leading zero lost // Declare ZIP codes and other padded identifiers as strings
// { zipCode: z.string() } → "01234" ← correct Cas d'utilisation courants
- Consommation d'APIs SOAP et XML héritées
- Les services d'entreprise hérités (banque, assurance, logistique) exposent souvent des APIs SOAP qui retournent du XML. Convertissez la réponse en JSON pour travailler avec les données en utilisant les outils JavaScript modernes, les stocker dans une base de données documentaire ou les transmettre à un consommateur d'API REST.
- Traitement des flux RSS et Atom
- Les flux RSS 2.0 et Atom 1.0 sont du XML. Convertissez le XML du flux en JSON pour extraire les titres, les liens, les dates de publication et les descriptions pour les agrégateurs de flux, les pipelines de contenu et les systèmes de notification, sans dépendance à une bibliothèque d'analyse XML.
- Analyse des fichiers Sitemap
- Les fichiers sitemap.xml énumèrent les URL d'un site avec des métadonnées. Convertissez un sitemap en JSON pour analyser la couverture des URL, construire des files d'attente d'exploration, comparer les sitemaps entre environnements ou alimenter les URL dans un vérificateur de liens ou un outil d'audit SEO.
- Transformation des fichiers de configuration
- De nombreux systèmes d'entreprise (Spring, Maven, Ant, JBoss, Tomcat) utilisent des fichiers de configuration XML. Convertissez-les en JSON pour l'analyse, les scripts de migration, la génération de documentation ou l'importation dans des outils qui parlent nativement JSON.
- Développement mobile et Android
- Les ressources Android, les fichiers de mise en page et AndroidManifest.xml sont tous du XML. Convertissez-les en JSON pour les scripts d'analyse, l'audit automatisé ou la génération de documentation sur les permissions déclarées, les activités et les valeurs de ressources.
- Migration de données et ETL
- Les exports de données des systèmes d'entreprise (ERP, CRM, paie) arrivent souvent en XML. Convertissez en JSON comme première étape d'un pipeline ETL pour charger les données dans un magasin de données natif JSON comme MongoDB, Firestore ou une API REST.
Détails techniques
- DOMParser du navigateur pour l'analyse XML
- L'entrée XML est analysée avec le DOMParser natif du navigateur avec le type MIME 'text/xml' — le même moteur utilisé pour rendre SVG et XHTML. Il est entièrement conforme à XML 1.0 et signale les erreurs de bonne formation avec les informations de ligne et de colonne. Cette approche gère correctement les espaces de noms, les sections CDATA, les instructions de traitement et les références d'entité sans dépendance tierce.
- Sérialisation DOM vers JSON récursive
- Après l'analyse, l'outil parcourt l'arborescence DOM de manière récursive. Les nœuds éléments deviennent des objets JSON ; leurs attributs deviennent des clés préfixées par @_ ; les éléments ne contenant que du texte deviennent des valeurs de chaîne simples ; les éléments ayant à la fois des attributs et du contenu textuel obtiennent une clé #text pour le contenu textuel. Les éléments frères du même nom sont regroupés et émis comme tableau JSON. Les nœuds texte composés uniquement d'espaces entre les éléments sont ignorés.
- Aucune coercition de type — Préservation des chaînes
- Toutes les valeurs d'attributs et les contenus textuels sont écrits dans la sortie JSON comme des chaînes. Aucun parseInt, parseFloat ou analyse booléenne n'est appliqué. C'est un choix de conception délibéré pour éviter la corruption silencieuse des données pour les valeurs avec zéro initial, les décimales sensibles à la précision et les chaînes ressemblant à des booléens. La coercition de type, si nécessaire, doit être appliquée explicitement dans le code en aval.
- 100 % basé sur le navigateur — Aucun envoi, aucun serveur
- Tout le traitement s'exécute dans le moteur JavaScript de votre navigateur. Aucune donnée n'est transmise sur le réseau à aucun moment. Les entrées de plus de 200 Ko passent automatiquement du mode en direct au mode manuel (nécessitant un clic explicite sur Convertir) pour maintenir la réactivité du navigateur et éviter le blocage du thread principal lors d'un parcours DOM intensif.
Bonnes pratiques
- Validez d'abord la bonne formation XML
- Si votre source XML est écrite à la main ou générée par un système qui produit parfois des sorties incorrectes, validez-la avant de convertir. Utilisez le bouton Valider du Formateur XML pour confirmer que le XML est bien formé et obtenir des localisations précises des erreurs pour tout problème.
- Normalisez les champs un-ou-plusieurs en tableaux
- Quand votre schéma XML permet un ou plusieurs éléments enfants du même nom, la sortie JSON sera un objet pour un élément et un tableau pour plusieurs. Normalisez toujours ces champs dans votre code consommateur : const items = [].concat(result.items ?? []) — c'est sûr pour zéro, un ou plusieurs éléments et empêche les TypeError.
- Appliquez la coercition de type explicitement et sélectivement
- Comme cet outil préserve toutes les valeurs comme des chaînes, appliquez la coercition de type délibérément dans votre code pour les champs spécifiques qui en ont besoin. Utiliser parseInt(val, 10) pour un champ entier connu est sûr. Appliquer la coercition largement avec Number(val) risque de corrompre les valeurs avec zéro initial, les chaînes vides et les décimales sensibles à la précision.
- Vérifiez #text lors de l'accès aux valeurs d'éléments
- Si un élément peut avoir des attributs dans certaines charges utiles et non dans d'autres, sa valeur JSON sera soit une chaîne simple (sans attributs) soit un objet avec des clés @_ et une clé #text (avec attributs). Écrivez des accesseurs robustes : const val = typeof node === 'object' ? node['#text'] : node. Ce modèle gère les deux formes et évite les valeurs undefined silencieuses.
- Pour un travail XML sans perte, utilisez le Formateur XML
- La conversion XML vers JSON supprime les commentaires, les instructions de traitement et la sémantique des espaces de noms. Si vous devez préserver tout le contenu XML exactement, utilisez le Formateur XML pour embellir, minifier et valider sans aucune perte. Convertissez en JSON uniquement quand vous devez travailler avec les données dans un contexte natif JSON.
Questions fréquentes
Mes données XML sont-elles envoyées à un serveur lorsque j'utilise cet outil ?
Comment les attributs XML sont-ils représentés dans la sortie JSON ?
Le convertisseur effectue-t-il une coercition de nombres ou de booléens ?
Comment les éléments répétés (de même nom en tant que frères) sont-ils gérés ?
La conversion XML vers JSON est-elle sans perte ?
Comment reconvertir du JSON en XML ?
Que se passe-t-il avec les espaces de noms XML ?
Pourquoi 0123 devient-il "0123" et non 123 ?
Quelle est la différence entre cet outil et un formateur XML ?
Y a-t-il une limite de taille ?
Le convertisseur gère-t-il les sections CDATA ?
Puis-je convertir du XML avec plusieurs éléments racines ?
Outils connexes
Voir tous les outils →Décodeur et Encodeur Base64
Encodage et formatage
Décodez et encodez en Base64 en ligne gratuitement. Conversion en temps réel, support UTF-8 et émojis. 100 % privé, dans votre navigateur.
Convertisseur CSV vers JSON
Encodage et formatage
Convertissez du CSV en JSON dans le navigateur. RFC 4180, inférence de types, ligne d'en-tête, sûr pour grands entiers. 100 % privé, sans envoi.
JSON Diff (Comparateur)
Encodage et formatage
Comparez deux fichiers JSON instantanément dans votre navigateur. Vue côte à côte, sortie JSON Patch RFC 6902, ignorer les champs bruyants comme les horodatages et les ID. 100% privé, aucun envoi.
Formateur et Validateur JSON
Encodage et formatage
Formatez, validez et embellissez vos JSON dans le navigateur. Validation syntaxique, détection d'erreurs, minification et copie en un clic. 100 % privé.
Validateur JSON Schema
Encodage et formatage
Validez du JSON contre n'importe quel JSON Schema instantanément dans votre navigateur. Compatible Draft 2020-12, 2019-09 et Draft-07 avec messages d'erreur au chemin précis. 100 % privé — sans envoi, sans compte, gratuit.
Convertisseur JSON vers CSV
Encodage et formatage
Convertissez du JSON en CSV dans le navigateur. Préréglages RFC 4180, Excel-EU, TSV, Pipe. Aplatir ou stringifier. 100 % privé, sans envoi.