Convertir TOML en XML

Vous pouvez convertir TOML en XML gratuitement et sans compte : déposez le fichier ci-dessus et, une ou deux secondes plus tard, le résultat est prêt à télécharger. La conversion se fait dans votre propre navigateur : le fichier n’est donc jamais téléversé. Cela marche sous Windows, macOS et Linux comme sur iPhone et Android, et continue de marcher si vous coupez le réseau.

  • Où cela s’exécute Dans votre navigateur. Le fichier n’est pas téléversé.
  • Sans perte Rien ne se perd. XML contient exactement ce que contenait TOML.
  • Limite de taille Jusqu’à 100 Mo par fichier, gratuitement et sans compte.

Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.

Quand un format moderne rencontre une chaîne d’outillage plus ancienne

TOML est aujourd’hui le format par défaut pour les manifests Python, Rust et Go. XML reste le format par défaut pour Maven, Ant, Spring XML, les descripteurs de déploiement Java, la plupart des configurations SOAP, les fichiers de build Android, et un grand nombre d’autres chaînes Java et .NET qui ne sont pas près de changer. Quand un dépôt moderne doit produire un artefact consommé par l’une d’elles, la conversion est le point de friction.

Le cas d’usage honnête est donc presque toujours unidirectionnel : un fichier moderne devient un document lisible par un consommateur ancien, le temps d’une intégration, d’un constructeur CI ou d’une API qui demande du XML. La conversion sert cet aller-simple. L’inverse — un XML riche et commenté vers TOML — est un travail de réécriture qu’aucun convertisseur ne fait bien, parce que ce qu’il faut décider n’est pas dans le fichier.

Tables, headers pointés et arrays of tables : ce qui devient quoi

Une table TOML devient un élément XML du même nom, et un header pointé `database.connection` devient un élément `database` contenant un élément `connection` — l’imbrication du XML correspond exactement à l’imbrication du header, parce que les deux modèles décrivent un arbre de paires. Un array of tables écrit avec un header à double crochets devient une suite d’éléments frères, tous nommés d’après la dernière partie du header et apparaissant dans l’ordre du fichier TOML.

Une table unique sous ce qui pourrait être un array of tables — un fichier qui a un seul auteur, par exemple — produit un seul élément, parce qu’il n’y a rien à répéter. La structure s’aplatit sur le bord de l’array : un fichier avec une dépendance et un autre avec deux dépendances produisent du XML structurellement différent, ce qui est un diff qu’une revue de code veut comprendre. C’est aussi pourquoi un export qui était un array of tables doit le rester : ajouter un élément ne change rien, en retirer un change tout.

Les valeurs typées deviennent des attributs, et c’est discutable

L’ordre des enfants et des attributs n’est pas le même en TOML et en XML. TOML a un seul concept de paire clé-valeur ; XML a deux concepts, l’attribut sur l’élément et l’enfant sous l’élément, et le choix entre les deux est la décision qu’aucun convertisseur ne peut prendre correctement. La convention appliquée ici met les scalaires en attributs et les objets en enfants, ce qui donne un XML où l’identifiant, le nom, la version et le booléen sont visibles sans entrer dans l’élément, et où tout ce qui est structuré vit plus bas.

C’est lisible pour un humain, mais ce n’est pas toujours ce que le schéma attend. Un schéma XSD qui définit un champ obligatoire comme élément enfant refusera le document, et la correction est d’éditer l’ordre des choses à la main plutôt que d’insister depuis le convertisseur. Pour une cible sans schéma — un script qui parse au feeling, un consommateur interne — la convention par défaut sert la lecture, et c’est la majorité des cas où cette conversion est demandée.

Les datetimes deviennent des chaînes, et le fuseau part avec

TOML est un des rares formats de configuration qui a de vrais types temporels dans sa spécification : offset datetimes, local datetimes, local dates et local times. XML n’a pas de type date du tout. Tout devient une chaîne, et la chaîne est exactement celle que TOML a acceptée, avec l’offset s’il y en avait un.

C’est mieux que de normaliser en UTC, parce qu’une date normalisée peut avoir été saisie dans un autre fuseau et un destinataire qui ne sait pas qu’une normalisation a eu lieu lira l’heure comme locale et se trompera d’une heure ou deux. Le défaut honnête est de passer ce que le fichier a écrit. La correction pour un consommateur qui exige du ISO 8601 strict est une édition, et c’est la même édition qu’il faudrait pour n’importe quel format source qui ne le produirait pas déjà.

Les entiers au-delà de 2⁵³ refusent de partir, et c’est la bonne décision

TOML 1.0 promet des entiers 64 bits signés et le parseur les respecte. XML, comme JSON, n’a que des types numériques approximatifs au-delà de neuf trillions, et un grand identifiant — un snowflake Discord, un horodatage nanoseconde en nanosecondes depuis l’epoch, un grand numéro de série — est silencieusement arrondi si le convertisseur le force dans un nombre XML.

Refuser est la décision correcte, et c’est la même décision que pour JSON : un identifiant silencieusement arrondi devient un bogue qui se manifeste des semaines plus tard dans une jointure qui ne correspond plus à rien. Mettez ces valeurs entre guillemets dans le TOML source pour qu’elles deviennent des chaînes, et la conversion se fera sans accroc. C’est une édition d’une minute sur le fichier d’origine, et c’est celle qui distingue une migration qui marche d’une qui marchera presque.

Les chaînes multi-lignes n’arrivent pas en multi-lignes

Une valeur TOML multi-lignes écrite entre triple guillemets produit un seul attribut XML ou un seul élément texte avec des sauts de ligne échappés, parce que les attributs XML ne peuvent pas porter de saut de ligne et que les éléments texte les portent, mais rarement de la manière dont l’auteur les voulait. Le XML ne connaît pas le triple-guillemet, et l’auteur ici non plus ne l’invente pas.

Pour une cible où la lisibilité compte — un fichier Spring documenté, un manifeste à éditer à la main — passer une fois par sed ou par votre éditeur pour réécrire les valeurs longues en éléments CDATA, ou pour les sortir de l’attribut et les mettre comme enfants, prend quelques minutes et fait une vraie différence. C’est aussi la différence entre un fichier qui invite à être modifié et un fichier qu’aucune équipe ne voudra toucher.

Les commentaires que vous aviez dans le TOML ne sont plus là

TOML supporte les commentaires et l’outillage Python et Rust les utilisent abondamment : la raison d’une épingle, le numéro de ticket à côté d’un contournement, le bloc qui explique à quel environnement s’applique un réglage. XML supporte aussi les commentaires, mais aucun convertisseur automatique ne peut les faire traverser, parce que le commentaire est un élément de la grammaire et non un attribut du contenu.

La migration honnête recopie les commentaires à la main. Pour un petit fichier c’est cinq minutes, pour un grand manifeste c’est une heure, et c’est du temps bien employé : un document XML sans commentaires est un document que la personne qui le lira dans deux ans ne pourra pas maintenir. Si la cible n’accepte pas les commentaires et qu’aucun consommateur ne les lira, ce coût est nul, et l’absence est pardonnée.

Un en-tête XML et un prologue que vous voudrez peut-être enlever

Le document commence par `<?xml version="1.0" encoding="UTF-8"?>`, et l’élément racine prend le nom de la première table de premier niveau du TOML — `project`, `package`, `tool` ou ce que la source déclare. C’est ce qu’un parseur XML standard attend, et c’est ce que la majorité des chaînes d’outillage Java et .NET consomment sans protester.

Le cas particulier est un consommateur qui ne veut pas du prologue, et il en existe : certains pipelines CI remplacent le prologue à leur propre format, certaines configurations Spring ne le tolèrent pas dans un test unitaire, et un fichier qui doit être inliné dans un autre XML ne peut pas avoir deux prologues. Pour ces cas, ouvrir le fichier dans un éditeur et effacer la première ligne est une seconde de travail, et le convertisseur n’a pas de raison de s’en mêler.

Pour ce qu’un document XML perd et que cette conversion ne peut pas compenser

XML peut être validé par un schéma XSD ou relax NG avant qu’une application ne démarre, et c’est une partie non négligeable de la valeur d’un fichier de configuration XML : la machine refuse ce qu’un humain oublierait. TOML n’a pas de langage de schéma dans sa spécification, et un TOML généré ne porte pas avec lui la description de ce qui est attendu.

Le convertisseur ne produit pas de schéma. La validation doit être faite par la cible, et pour un document qui doit passer un XSD exigeant, c’est une étape à part. Pour une cible sans XSD — la majorité des cas, et c’est la majorité des cas pour lesquels on convertit vers XML plutôt qu’on ne génère du JSON — le document arrive tel quel et le destinataire fait avec, ce qui est exactement la promesse implicite de cette conversion.

Tout reste dans le navigateur, et c’est ce que cette page fait pour vous

La conversion est un parcours d’arbre en mémoire : TOML lu, arbre intermédiaire construit, XML écrit. Aucun octet ne quitte le navigateur, aucun service n’est appelé, et le fichier produit arrive par le même chemin de téléchargement que tout autre fichier de votre machine.

Pour un manifest de configuration c’est en général sans importance pratique, mais pas toujours. Un pyproject.toml qui liste des dépendances internes nomme des dépôts privés ; un Cargo.toml déclare des crates venues d’un registre d’entreprise ; un fichier de configuration de build peut contenir des jetons de signature ou des identifiants de pipeline. Aucune de ces choses ne devrait traverser un service web tiers sur son chemin vers un consommateur ancien, et c’est exactement la garantie qu’une conversion locale vous donne.

Comment convertir TOML en XML

  1. Déposez votre fichier TOML sur cette page, ou cliquez pour en choisir un.
  2. Choisissez XML comme destination. La conversion se fait dans votre navigateur et le fichier n’est pas téléversé.
  3. Téléchargez le fichier XML terminé.

TOML et XML : ce qui change

TOML face à XML
TOMLXML
Nom completTom's Obvious Minimal LanguageExtensible Markup Language
Extension de fichier.toml.xml
Type de médiaapplication/tomlapplication/xml
Première publication20131998
Publié parW3C
SpécificationTOML 1.0XML 1.0
LicenceStandard ouvertStandard ouvert
Situation actuelleActuelActuel
S’ouvre dans un navigateurAucun navigateurTous les navigateurs
Envisagé à la placeYAML, JSON, INIJSON, YAML

Ce qui est conservé

Rien n’est écarté. TOML et XML enregistrent leur contenu sans perte : la conversion change l’emballage, pas la qualité, et elle peut être répétée sans que les dégâts s’accumulent.

Les commentaires suivent. TOML et XML ont tous deux une syntaxe de commentaire : les notes laissées à la personne suivante ne sont pas jetées en silence.

Ouvrir le résultat

XML s’ouvre dans tous les navigateurs actuels. TOML va encore moins loin. Si le fichier part sur une page web ou dans un formulaire, c’est souvent toute la raison de la conversion.

Visual Studio Code lit aussi bien TOML que XML : vous pouvez comparer le résultat à l’original sans second logiciel.

À quoi sert chaque format

Les deux visent des usages différents : TOML la retouche, XML l’échange entre programmes. Cela mérite d’être pesé avant, car ce qui justifie l’un est souvent ce qui rend l’autre malcommode.

TOML a ete publié en 2013. La spécification est TOML 1.0, et elle mérite d’être connue si le fichier doit survivre à l’outil qui l’a écrit.

XML vient de W3C et date de 1998, décrit par XML 1.0. Visual Studio Code et oXygen XML Editor le lisent.

XML a été publié en 1998 et TOML en 2013. Le plus ancien est en général le fichier le plus sûr à remettre ; le plus récent fait le même travail en moins d’octets.

De TOML à XML : questions fréquentes

Mon fichier TOML est-il téléversé quelque part ?

Non. Cette conversion se fait entièrement dans votre navigateur : le fichier ne quitte donc pas votre appareil. Vous pouvez le vérifier vous-même — ouvrez l’onglet réseau des outils de développement et convertissez quelque chose. Vous verrez la page elle-même et les requêtes de statistiques et de publicité qui financent ce service, et pas une seule qui transporte votre fichier.

Convertir TOML en XML est-il gratuit ?

Oui. Pas de compte, pas de filigrane et pas de quota journalier à dépenser : cela tourne sur votre propre machine, vous pouvez donc revenir autant de fois que vous voulez. Le navigateur traite des fichiers jusqu’à 100 Mo, 100 à la fois.

Y a-t-il une perte de qualité en convertissant TOML en XML ?

Non. XML enregistre le même contenu sans rien jeter : le résultat est identique en qualité à l’original.

La conversion de TOML à XML est-elle sans perte ?

Rien n’est écarté. TOML et XML enregistrent leur contenu sans perte : la conversion change l’emballage, pas la qualité, et elle peut être répétée sans que les dégâts s’accumulent.

En savoir plus sur ces formats