Guide de conversion XML et JSON : Transformation de fichiers de configuration et de formats de données API
Différences clés : XML vs JSON
| Caractéristique | XML | JSON |
|---|---|---|
| Format de données | Balisage basé sur les balises | Paires clé-valeur |
| Attributs | Oui (<node attr="val">) |
Non (les attributs deviennent des champs) |
| Espaces de noms | Oui (xmlns) |
Non |
| Commentaires | Oui (<!-- -->) |
Non |
| Tableaux | Implicites (éléments répétés) | Explicites ([]) |
| Nœuds texte | Contenu mixte (balises + texte) | Valeurs de chaîne simples |
XML est meilleur pour les données de type document (SVG, HTML, configurations). JSON est meilleur pour les données structurées (réponses API).
Comment les attributs XML sont mappés en JSON
Les éléments XML peuvent avoir à la fois des attributs et du contenu texte — c'est la partie délicate de la conversion :
Élément simple
<person name="John" age="30"/>
{
"person": {
"@name": "John",
"@age": "30"
}
}
Convention : utilisez le préfixe
@pour les attributs XML. C'est la règle de conversion la plus courante.
Contenu mixte (Attributs + Texte)
<price currency="USD">68.00</price>
{
"price": {
"@currency": "USD",
"#text": "68.00"
}
}
Utilisez
#textpour le contenu texte de l'élément, le distinguant des attributs.
Détection des tableaux : Le piège le plus courant
En XML, les tableaux sont implicites — les éléments répétés avec le même nom forment un tableau :
<books>
<book>Three-Body Problem</book>
<book>To Live</book>
</books>
{
"books": {
"book": ["Three-Body Problem", "To Live"]
}
}
Problème : Avec un seul élément, XML ne peut pas le distinguer d'un non-tableau :
<books>
<book>Three-Body Problem</book>
</books>
Cela pourrait être converti en :
{
"books": {
"book": "Three-Body Problem"
}
}
Solution : Dans l'outil XML↔JSON, cochez « Forcer le tableau » et spécifiez quels éléments doivent toujours être traités comme des tableaux.
Gestion des espaces de noms
Les espaces de noms XML n'ont pas d'équivalent direct en JSON :
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<m:GetPrice xmlns:m="http://example.com">
<m:Item>123</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
Stratégies courantes :
| Stratégie | Description | Cas d'usage |
|---|---|---|
| Conserver le préfixe | soap:Body → "soap:Body" |
Traitement SOAP/WSDL |
| Supprimer le préfixe | soap:Body → "Body" |
Cas simples, sans conflits |
| Clé d'espace de noms | {soap}Body |
Besoin de distinguer des éléments de même nom d'espaces de noms différents |
Utilisez le Formateur XML pour nettoyer le XML avant la conversion.
Utilisation de l'outil XML↔JSON
Étape 1 : Ouvrir l'outil
Visitez l'outil XML↔JSON et sélectionnez la direction de conversion.
Étape 2 : Saisir les données source
- XML → JSON : Collez la chaîne XML
- JSON → XML : Collez la chaîne JSON
Vous pouvez d'abord embellir l'entrée avec le Formateur JSON ou le Formateur XML.
Étape 3 : Configurer les options de conversion
| Option | Description |
|---|---|
| Préfixe d'attribut | Mapper les attributs comme @attr ou $attr |
| Clé de nœud texte | Mapper le contenu texte comme #text ou _text |
| Forcer le tableau | Spécifier les noms d'éléments devant toujours être des tableaux |
| Espaces de noms | Conserver / supprimer / transformer |
Étape 4 : Exécuter la conversion
Cliquez sur « Convertir », vérifiez le résultat et copiez.
Scénarios pratiques
Migration de fichiers de configuration
De nombreux projets existants utilisent des configurations XML (Spring, Maven). Les nouveaux projets préfèrent YAML/JSON :
pom.xml → package.json (informations de dépendances)
spring-config.xml → application.json (configuration de Beans)
API SOAP vers REST
Les réponses SOAP sont en XML ; elles nécessitent une conversion en JSON pour une utilisation front-end :
Réponse XML SOAP → JSON → rendu front-end
Extraction de métadonnées SVG
SVG est au format XML ; extrayez les métadonnées en JSON pour un traitement programmatique :
<svg width="100" height="100"> → {"svg": {"@width": "100", "@height": "100"}}
Considérations JSON vers XML
Lors de la conversion de JSON en XML, notez :
| Considération | Description |
|---|---|
| Élément racine | JSON doit avoir une seule clé racine |
| Validité du nom de clé | Les noms de balises XML ne peuvent pas commencer par un chiffre ou contenir des espaces |
| Encapsulation des tableaux | Les tableaux JSON nécessitent un nom d'élément wrapper |
| Caractères spéciaux | <, >, & doivent être échappés comme entités |
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| Élément unique non converti en tableau | XML ne peut pas distinguer un élément unique d'un tableau | Cochez « Forcer le tableau » |
| Attributs perdus | Règles de conversion sans préfixe d'attribut | Vérifiez le paramètre de préfixe d'attribut |
| Conflit d'espaces de noms | Éléments de même nom dans différents espaces de noms | Conservez les préfixes d'espaces de noms |
| Erreur JSON vers XML | Nom de clé invalide | Renommez la clé pour respecter la spécification XML |
| Contenu mixte perdu | Clé de nœud texte incorrectement mappée | Vérifiez la configuration #text |
Résumé
La conversion XML↔JSON est un besoin courant dans la migration de formats de données et l'intégration API. Comprendre les trois problèmes clés — le mappage des attributs, la détection des tableaux et les espaces de noms — est essentiel pour une conversion correcte. L'outil XML↔JSON offre des options de conversion flexibles, tandis que le Formateur JSON et le Formateur XML complètent votre flux de conversion de formats.