FreeToGenerate.com

100 % gratuit · sans inscription · tout se passe dans votre navigateur

0
Options
Indentation

Il n’existe aucune norme pour cette correspondance : cet outil suit donc la plus répandue, où les attributs deviennent des clés préfixées par @ et le texte propre d’un élément devient #text. D’autres outils adoptent d’autres conventions, si bien que le JSON produit ici ne se rechargera pas toujours à l’identique ailleurs.

Tout se passe dans votre navigateur. Rien n’est envoyé.

Aussi disponible en : English · Español · Português · العربية

Convertir du XML en JSON

Collez du XML et obtenez du JSON selon la convention @ et #text, avec un compte rendu honnête de tout ce que la conversion a dû laisser derrière elle.

Ce qu’implique la conversion de XML en JSON

XML et JSON décrivent tous deux des données structurées, mais ils n’ont pas la même forme, et c’est là toute la difficulté. Un élément XML peut porter des attributs en plus de son contenu, une même balise peut se répéter autant de fois que nécessaire, et du texte peut se glisser entre des éléments enfants. JSON dispose d’objets, de tableaux, de chaînes, de nombres, de booléens et de null, et d’aucune notion d’attribut. Convertir de l’un vers l’autre revient donc à choisir comment écrire les idées supplémentaires du XML dans le vocabulaire plus restreint du JSON.

Aucune norme ne régit ce choix. Le W3C n’a jamais défini d’encodage JSON du XML : chaque outil adopte donc une convention, et les conventions divergent. Ce convertisseur utilise la plus répandue — les attributs deviennent des clés préfixées par @ et le texte propre d’un élément devient #text — celle qu’emploient Json.NET de Newtonsoft, xml2js et Spark. D’autres diffèrent : BadgerFish utilise $ pour le texte, et la convention Parker abandonne purement et simplement les attributs.

Puisque la correspondance relève d’un choix et non d’une règle, cette page nomme la convention qu’elle applique et signale, pour votre document précis, les éléments qui n’ont pas pu passer. C’est plus utile qu’un convertisseur qui écarte des choses en silence et présente le résultat comme complet.

Comment convertir du XML en JSON

  1. Collez votre XML dans le volet de gauche. Le JSON apparaît à droite au fil de la frappe, sans bouton à cliquer. « Charger un exemple » remplit le volet avec un petit catalogue qui montre des attributs, des éléments répétés et un commentaire.
  2. Choisissez la rigueur de lecture des valeurs. Par défaut, toutes les valeurs restent des chaînes, car XML n’a pas de types. En activant la lecture des types, 42 devient un nombre et true un booléen, mais tout ce qu’un aller-retour modifierait — comme 01234 ou 1.10 — reste du texte.
  3. Lisez le compte rendu des pertes, puis copiez. Sous les volets, l’outil énumère ce que la convention n’a pas pu représenter et le nombre d’occurrences. S’il indique que rien n’a été perdu, le document entre exactement dans la convention. « Copier le résultat » place le JSON dans le presse-papiers.

Ce que la convention fait des attributs, des répétitions et du texte

Un attribut devient une clé précédée d’un @, ce qui le garde distinct d’un élément enfant portant le même nom. Sans ce préfixe, un élément doté d’un attribut id et un élément doté d’un enfant id produiraient un JSON identique, et la conversion inverse tiendrait du pile ou face.

Une balise répétée devient un tableau, et une balise qui n’apparaît qu’une fois reste une valeur simple. C’est la règle à laquelle la plupart des gens s’attendent en regardant le résultat, et c’est aussi l’origine de la seule véritable asymétrie entre ces deux formats : rien en XML ne signale une liste, si bien qu’une liste qui ne contient qu’un élément ressemble exactement à une valeur unique.

Le texte propre d’un élément devient #text lorsque cet élément possède aussi des attributs ou des enfants, et devient directement la valeur lorsqu’il n’a ni l’un ni l’autre. Un élément vide devient null. Ces choix gardent le cas courant — un élément feuille contenant une chaîne — aussi bref que possible, plutôt que d’envelopper chaque valeur dans un objet par souci d’uniformité.

Ce qui ne passe pas, honnêtement

Quatre choses n’ont nulle part où loger dans la convention, et l’outil signale chacune plutôt que de l’écarter en silence : les commentaires, les instructions de traitement, la déclaration doctype et les sections CDATA, qui arrivent sous forme de texte ordinaire et perdent donc le fait d’avoir été marquées comme brutes.

Le contenu mixte est le cas le plus subtil. Un paragraphe comportant un mot en gras au milieu d’une phrase place du texte avant, entre et après ses éléments enfants. La convention ne dispose que d’un seul emplacement #text : le texte survit, mais pas sa position par rapport aux éléments. Si votre XML tient davantage du document que de l’enregistrement, il s’agit d’une limite réelle, et l’outil vous le dira.

Le sens inverse a son propre trou, qu’il vaut mieux connaître avant de se fier à un aller-retour. La conversion de JSON en XML puis retour a été mesurée sur environ 1 700 documents générés : 72,8 % sont revenus identiques. Tous les échecs, sans exception, tenaient à exactement deux causes : un tableau d’un seul élément, écrit comme une balise unique et relu comme une valeur simple, ou un tableau imbriqué dans un autre tableau, qui n’a aucune écriture possible sous forme de balise répétée et se retrouve aplati. Une fois ces deux causes déduites, le résidu inexpliqué était nul : les limites sont donc précisément celles-là et aucune autre.

Les espaces de noms sont conservés tels qu’ils ont été écrits, préfixe compris, plutôt que résolus. Le préfixe reste partie intégrante du nom de la clé, si bien que ns:title devient la clé ns:title. C’est fidèle au document, mais cela suppose que le consommateur du JSON connaisse le préfixe, puisque JSON ne possède aucun mécanisme d’espaces de noms pour transporter cette liaison.

Pourquoi est-ce gratuit ?

La conversion consiste en une analyse et une réécriture, toutes deux effectuées dans votre navigateur au fil de la frappe. Rien n’est envoyé : il n’y a donc aucun coût serveur à récupérer, ni aucune raison de vous demander un compte avant de vous laisser convertir votre propre document.

Cela signifie aussi aucun filigrane, aucune limite de taille posée pour vous pousser vers un abonnement, et aucun plafond sur le nombre de documents traités.