Convertisseur JSON vers XML
Collez du JSON, obtenez du XML instantanément. Convertit les objets, tableaux et attributs @_ dans le navigateur — rien n'est envoyé. Gratuit, privé, sans inscription.
Options · 2 espaces · JSON → XML
Qu'est-ce que la Conversion JSON vers XML et Comment Fonctionne-t-elle ?
JSON (JavaScript Object Notation) et XML (Extensible Markup Language) sont tous deux des formats de données structurées, mais ils ont des modèles fondamentalement différents : JSON est un arbre d'objets, de tableaux, de chaînes, de nombres, de booléens et de valeurs null sans concept d'attributs ni de contrainte de racine de document ; XML est un arbre d'éléments pouvant porter des attributs et du contenu textuel, et le document doit avoir exactement un élément racine. La conversion de JSON vers XML 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 fast-xml-parser (Node.js), xmltodict (Python) et JAXB (Java) — appliquée en sens inverse :
**1. Normalisation de l'élément racine.** La différence la plus importante entre JSON et XML est la contrainte de racine. JSON n'a pas de concept de racine ; XML en requiert exactement une. Le convertisseur gère quatre cas automatiquement. Un objet à clé unique utilise cette clé comme racine XML : { "config": {...} } →
**2. Préfixe @_ → attributs XML.** Les clés JSON préfixées par @_ deviennent des attributs XML sur l'élément englobant. { "element": { "@_id": "42", "@_class": "primary" } } produit
**3. #text → contenu textuel d'un élément.** Quand un élément a besoin à la fois d'attributs et de contenu textuel, le texte est stocké sous la clé #text : { "price": { "@_currency": "USD", "#text": "29.99" } } →
**4. Tableaux → éléments frères répétés du même nom.** XML permet plusieurs éléments enfants du même nom ; JSON utilise des tableaux pour les listes ordonnées. Un tableau JSON sous une clé produit des éléments enfants répétés qui réutilisent le nom de la clé : { "items": ["a", "b"] } produit
**5. Symétrique avec XML vers JSON.** Les conventions @_ et #text utilisées ici sont exactement les mêmes conventions utilisées par le Convertisseur XML vers JSON compagnon. Cela signifie qu'un aller-retour JSON → XML → JSON préserve les attributs, le contenu textuel et la structure des éléments — à condition que le JSON d'entrée suive les conventions @_/#text.
**Quand convertir du JSON en XML ?** Les scénarios les plus courants sont : (1) envoyer des données à un service web SOAP ou XML hérité qui requiert un corps de requête XML ; (2) générer des fichiers de configuration XML (Spring, Maven, Ant, ressources Android) à partir de données JSON ; (3) produire du XML sitemap.xml ou RSS depuis des données de contenu JSON ; (4) interopérer avec des systèmes d'entreprise (ERP, CRM, EDI) qui consomment du XML ; (5) générer du SVG ou d'autres formats graphiques basés sur XML programmatiquement à partir de données JSON. Pour formater et valider le XML résultant, utilisez le Formateur XML.
// Convert JSON to XML in Node.js using fast-xml-parser
import { XMLBuilder } from 'fast-xml-parser';
const data = {
catalog: {
product: {
'@_id': 'P01',
'@_category': 'electronics',
name: 'Wireless Headphones',
price: {
'@_currency': 'USD',
'#text': '79.99'
}
}
}
};
const builder = new XMLBuilder({
attributeNamePrefix: '@_', // @_ keys become XML attributes
textNodeName: '#text', // #text key becomes element text content
ignoreAttributes: false, // process @_ attribute keys
format: true, // pretty-print with indentation
indentBy: ' ', // 2-space indent
});
const xml = builder.build(data);
console.log(xml);
// <catalog>
// <product id="P01" category="electronics">
// <name>Wireless Headphones</name>
// <price currency="USD">79.99</price>
// </product>
// </catalog> Fonctionnalités clés
Conversion en direct
La sortie XML se met à jour instantanément au fil de la saisie ou du collage de JSON — sans bouton Convertir. Les grandes entrées (>200 Ko) passent automatiquement en mode manuel pour maintenir la réactivité du navigateur.
Normalisation automatique de la racine
XML requiert exactement un élément racine. Les objets à clé unique utilisent leur clé comme racine ; les objets à plusieurs clés sont enveloppés dans
Convention @_ pour les attributs et #text
Les clés préfixées par @_ deviennent des attributs XML ; la clé #text devient le contenu textuel d'un élément. Cela correspond à la convention fast-xml-parser et xmltodict, rendant la sortie symétrique avec le Convertisseur XML vers JSON compagnon.
Tableaux vers éléments répétés
Les tableaux JSON sous une clé produisent des éléments enfants répétés qui réutilisent le nom de la clé — sans singularisation. { "items": [1, 2, 3] } donne trois frères
Confidentialité 100 % basée sur le navigateur
Toute la conversion s'exécute localement dans votre navigateur en JavaScript. Votre JSON — dont les identifiants, les configurations internes et les charges utiles sensibles — n'est jamais envoyé à un serveur, jamais journalisé ni stocké.
Aller-retour symétrique avec XML vers JSON
Les conventions @_ et #text sont partagées avec le Convertisseur XML vers JSON compagnon. Un aller-retour JSON → XML → JSON préserve fidèlement les attributs, le contenu textuel et la structure imbriquée.
Exemples
Objet de Réponse API
{"user":{"id":42,"name":"Alice Kim","email":"alice@example.com","role":"admin","address":{"city":"Seoul","country":"KR"}}} Un objet JSON à clé unique où la clé de niveau supérieur devient l'élément racine XML. L'objet address imbriqué produit un élément enfant
avec les enfantsTableau de Niveau Supérieur
[{"id":1,"name":"Widget A","price":9.99},{"id":2,"name":"Widget B","price":14.99},{"id":3,"name":"Widget C","price":4.49}] Quand l'entrée entière est un tableau JSON (non encapsulé dans un objet), le convertisseur produit
Objet avec Attributs et Contenu Textuel
{"catalog":{"product":{"@_id":"P01","@_category":"electronics","name":"Wireless Headphones","price":{"@_currency":"USD","#text":"79.99"}}}} Les clés préfixées par @_ deviennent des attributs XML sur l'élément : @_id devient id="P01" et @_category devient category="electronics" sur l'élément
Comment utiliser
- 1
Collez votre JSON
Saisissez ou collez vos données JSON dans le champ de saisie ci-dessus. Vous pouvez aussi cliquer sur « Charger un exemple » pour essayer un échantillon — un objet de réponse API, une charge utile tableau ou un objet utilisant des attributs @_ et #text.
- 2
Consultez la sortie XML en direct
Le XML apparaît instantanément dans le panneau de sortie. Les objets à clé unique utilisent leur clé comme racine ; les objets à plusieurs clés sont enveloppés dans
; les clés préfixées par @_ deviennent des attributs ; les tableaux deviennent des éléments enfants répétés. Ajustez l'indentation (2 ou 4 espaces) selon vos besoins. - 3
Copiez ou téléchargez
Cliquez sur Copier pour récupérer le XML dans votre presse-papiers, ou sur Télécharger pour le sauvegarder en fichier .xml. Pour valider ou reformater le résultat, collez-le dans le Formateur XML.
Pièges courants de conversion
L'objet à plusieurs clés obtient un wrapper inattendu
Si votre JSON de niveau supérieur a plusieurs clés, la sortie les enveloppe toutes dans
// Input: { "status": 200, "data": { "id": 1 } }
// Output: <root><status>200</status><data><id>1</id></data></root>
// Root is <root> — may not match your schema // Wrap in a named key to control the root element
// Input: { "response": { "status": 200, "data": { "id": 1 } } }
// Output: <response><status>200</status><data><id>1</id></data></response> Le tableau de niveau supérieur obtient un wrapper
Un tableau JSON de niveau supérieur n'a pas de nom d'élément, il est donc enveloppé comme
// Input: [{ "id": 1 }, { "id": 2 }]
// Output: <root><item><id>1</id></item><item><id>2</id></item></root>
// Tag names are generic // Wrap in a named key for meaningful tag names
// Input: { "products": [{ "id": 1 }, { "id": 2 }] }
// Output: <root><products><id>1</id></products><products><id>2</id></products></root>
// Each array element reuses the key name "products" as its tag Clés d'attributs sans le préfixe @_
Pour produire un attribut XML, la clé JSON doit être préfixée par @_. Sans le préfixe, la clé est traitée comme un élément enfant, pas comme un attribut.
// Input: { "tag": { "id": "42", "name": "Alice" } }
// Output: <tag><id>42</id><name>Alice</name></tag> ← id is a child element // Use @_ prefix for attributes
// Input: { "tag": { "@_id": "42", "name": "Alice" } }
// Output: <tag id="42"><name>Alice</name></tag> ← id is an attribute Élément avec à la fois attributs et texte — #text manquant
Si vous voulez qu'un élément ait à la fois des attributs XML et du contenu textuel, vous devez utiliser la clé #text pour le texte. Sans elle, le texte n'a nulle part où aller et l'élément sera vide ou produira une erreur.
// Input: { "price": { "@_currency": "USD", "value": "29.99" } }
// Output: <price currency="USD"><value>29.99</value></price>
// Text is a child element, not text content // Use #text for element text content
// Input: { "price": { "@_currency": "USD", "#text": "29.99" } }
// Output: <price currency="USD">29.99</price> ← text content Clés JSON avec des caractères invalides pour XML
Les noms d'éléments XML ne peuvent pas commencer par un chiffre ni contenir des espaces, des deux-points (sauf pour les préfixes d'espaces de noms) ou la plupart des caractères spéciaux. Si vos clés JSON contiennent ces caractères, le XML de sortie sera malformé. Renommez les clés problématiques avant de convertir, ou nettoyez-les dans une étape de post-traitement.
// JSON key starts with digit — invalid XML element name
// Input: { "1stItem": "value" }
// Output: <1stItem>value</1stItem> ← invalid XML // Use a valid XML element name
// Input: { "firstItem": "value" }
// Output: <firstItem>value</firstItem> ← valid XML Caractères spéciaux dans les valeurs non échappés
Le contenu textuel XML ne doit pas contenir de caractères bruts <, >, &, ni " — ils doivent être échappés en <, >, & et ". Le convertisseur échappe automatiquement ces caractères dans le contenu textuel des éléments et les valeurs d'attributs. Si le traitement en aval effectue un double échappement, vérifiez que votre analyseur XML consomme des octets XML bruts plutôt que de réescaper du contenu déjà échappé.
// JSON: { "query": "name = 'Alice' & role = 'admin'" }
// Converter outputs: <query>name = 'Alice' & role = 'admin'</query>
// If double-processed: &amp; — consumer is re-escaping // Converter output is correct — consume it as XML, not as a raw string // <query>name = 'Alice' & role = 'admin'</query> // XML parser decodes to: name = 'Alice' & role = 'admin'
Cas d'utilisation courants
- Appel de services web SOAP et XML hérités
- Construisez la charge utile JSON dans votre application, convertissez-la en XML et envoyez-la en POST au point de terminaison SOAP. Cela évite la construction manuelle de chaînes XML et vous permet de travailler avec les données dans une structure JSON native jusqu'au moment où vous devez la sérialiser pour le service hérité.
- Génération de fichiers de configuration XML
- Spring, Maven, Ant, Tomcat et Android utilisent tous des formats de configuration XML. Générez ou transformez les données de configuration en JSON — plus facile à comparer et versionner — puis convertissez en XML pour le déploiement.
- Production de Sitemap et flux RSS en XML
- Les systèmes de gestion de contenu et les générateurs de sites statiques stockent souvent les métadonnées de pages en JSON. Convertissez ces métadonnées en XML sitemap.xml ou flux RSS pour les soumettre aux moteurs de recherche ou syndiquer le contenu vers des lecteurs de flux.
- Intégration de données d'entreprise (EDI / ERP / CRM)
- Les systèmes ERP (SAP, Oracle), les plateformes CRM et les réseaux EDI échangent couramment des données en XML. Convertissez les exports JSON des APIs REST modernes en XML pour alimenter ces systèmes sans construire un sérialiseur XML personnalisé.
- Fichiers de ressources Android
- Les ressources de chaînes Android, les contraintes de mise en page et les entrées de manifeste sont tous du XML. Générez ou mettez à jour les fichiers de ressources programmatiquement depuis des sources de données JSON et convertissez au format XML requis par le système de build Android.
- Génération de SVG et de graphiques vectoriels
- SVG est du XML. Construisez la structure SVG comme données JSON — chemins, formes, couleurs, transformations — puis convertissez en XML pour produire des fichiers SVG valides pour le web, l'impression ou les outils d'édition vectorielle.
Détails techniques
- Analyse JSON conforme à RFC 8259
- L'entrée JSON est analysée avec le JSON.parse() natif du navigateur, entièrement conforme à RFC 8259. Cela fournit des messages d'erreur de syntaxe précis avec des informations de position au mieux (numéros de ligne et de colonne) et gère tous les types de données JSON : chaînes, nombres, booléens, null, tableaux et objets.
- Sérialiseur JSON vers XML récursif personnalisé
- Après l'analyse, un sérialiseur récursif personnalisé parcourt l'arborescence JSON. Les clés d'objets commençant par @_ sont émises comme attributs XML sur l'élément parent. La clé #text est émise comme contenu textuel de l'élément. Les clés d'objets ordinaires deviennent des éléments enfants. Les valeurs de tableaux produisent des éléments frères répétés du même nom. Les caractères spéciaux (<, >, &, ", ') dans le contenu textuel et les valeurs d'attributs sont échappés en leurs références d'entité XML.
- Normalisation de la racine
- XML requérant exactement un élément racine, le sérialiseur applique la normalisation de la racine avant de construire le document : les objets à clé unique utilisent la clé comme racine ; les objets à plusieurs clés et les tableaux de niveau supérieur reçoivent un wrapper synthétique
. Cela garantit que la sortie est toujours du XML bien formé quelle que soit la forme de l'entrée. - 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 lors d'une sérialisation intensive.
Bonnes pratiques
- Contrôlez l'élément racine avec un objet à clé unique
- La façon la plus propre de produire du XML significatif est de s'assurer que votre JSON de niveau supérieur est un objet à clé unique dont la clé est le nom de l'élément racine souhaité. Envelopper les données à plusieurs clés sous une clé nommée vous donne une racine sémantiquement significative au lieu du wrapper générique
. - Utilisez @_ et #text pour du XML à attributs nombreux
- Si votre schéma XML cible utilise de nombreux attributs (courant dans les fichiers de configuration, SVG et les enveloppes SOAP), restructurez votre JSON pour utiliser des clés préfixées par @_ et #text avant de convertir. Le XML résultant correspondra exactement au schéma cible sans post-traitement.
- Enveloppez les tableaux dans des objets nommés pour des noms de balises significatifs
- Un tableau de niveau supérieur produit le motif générique
, où- ...
- est un nom littéral fixe. Envelopper le tableau sous une clé nommée — { "products": [...] } — produit des éléments
répétés (le nom de la clé est réutilisé pour chaque élément du tableau) sous un wrapper . Cela donne un nom de balise significatif pour le domaine et est presque toujours préférable pour du XML qui sera analysé ou validé par un schéma. - Validez la sortie avec le Formateur XML
- Après la conversion, collez la sortie XML dans le Formateur XML pour valider la bonne formation, vérifier l'indentation et identifier tout problème structurel avant d'envoyer le XML à un service en aval ou de le committer dans le contrôle de version.
- Nettoyez les clés JSON avant de convertir
- Les noms d'éléments XML doivent commencer par une lettre ou un trait de soulignement et ne peuvent pas contenir d'espaces ni la plupart des caractères spéciaux. Si vos clés JSON proviennent d'une source externe (un nom de colonne de base de données, un nom de champ d'API ou une saisie utilisateur), vérifiez leur validité pour les noms XML avant de convertir pour éviter une sortie malformée.
Questions fréquentes
Mes données JSON sont-elles envoyées à un serveur lorsque j'utilise cet outil ?
Comment l'outil détermine-t-il l'élément racine XML ?
Pourquoi un objet JSON à plusieurs clés est-il enveloppé dans ?
Comment un tableau JSON de niveau supérieur se convertit-il en XML ?
Comment convertir des clés JSON en attributs XML ?
À quoi sert la clé #text ?
L'indentation affecte-t-elle la structure XML ?
Comment un tableau JSON imbriqué dans un objet se convertit-il en XML ?
Comment reconvertir du XML en JSON ?
Puis-je valider ou formater la sortie XML ?
Y a-t-il une limite de taille pour l'entrée JSON ?
Quels types JSON sont pris en charge ?
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.