Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
Vous pouvez convertir XML en TOML 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.
Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.
Ils sont convertis les uns après les autres et reviennent ensemble dans un ZIP.
XML en TOML
Chaque élément avec des enfants devient une table, écrite comme un en-tête entre crochets nommant le chemin complet en points. Un élément à trois niveaux de profondeur produit un en-tête contenant trois noms plutôt que trois blocs imbriqués, parce que TOML exprime la profondeur dans l’en-tête et non dans l’indentation.
À l’intérieur de chaque table, les valeurs simples viennent en premier et les tables imbriquées suivent, ce qui est le seul ordre que TOML autorise — tout ce qui est sous un en-tête lui appartient jusqu’à ce que l’en-tête suivant apparaisse. Cela veut dire que la sortie ne se lit pas dans le même ordre que le XML, et sur une config avec beaucoup de petits éléments le réarrangement est substantiel. C’est une réorganisation, pas un changement : aucune valeur ne va dans un autre chemin.
C’est la partie de la conversion qui n’a pas besoin de réparation. Deux éléments frères ou plus avec le même tag deviennent un tableau TOML de tables, avec l’en-tête à double crochets écrit une fois par item dans l’ordre du document. Une liste de dépendances, une liste de serveurs, une liste de règles — tout cela arrive sous la forme qu’une config TOML aurait utilisée de toute façon.
La réserve habituelle sur le XML s’applique toujours en dessous. Une occurrence unique d’un élément répétable n’est pas un tableau, donc cela devient une table simple avec un en-tête à crochet unique à la place. Convertissez un fichier avec une entrée et le même fichier avec deux, et les deux sorties diffèrent structurellement. Si la config est générée ou archivée dans un dépôt, c’est un diff que vous voulez comprendre avant qu’il apparaisse.
Les clés nues de TOML n’acceptent que des lettres, des chiffres, des soulignés et des traits d’union, et rien d’autre. Les attributs arrivent de l’analyseur sous forme de clés commençant par @, le texte propre d’un élément sous une clé nommée #text, et une déclaration d’espace de noms sous une forme comme @xmlns:soap. Tous sont entre guillemets dans la sortie, ce qui est du TOML valide et a l’air exactement aussi inhabituel que cela sonne.
C’est aussi une liste de choses à faire. Une clé entre guillemets est le convertisseur qui vous dit que ce nom vient de la machinerie XML plutôt que de votre configuration, et presque chacun d’eux devrait être renommé : un attribut @value devient une clé de valeur simple, une clé @xmlns est supprimée, une clé #text prend le nom de ce que l’élément contenait réellement. Faites cette passe une fois, immédiatement, pendant que vous vous souvenez encore de ce que le XML signifiait.
Un document TOML est lui-même une table, et un document XML a exactement un élément racine, donc la config entière apparaît un niveau plus bas que ce que vous voulez — sous un en-tête unique nommé d’après la racine. Un fichier enraciné dans configuration produit une table configuration qui contient tout.
Promouvoir le contenu est une édition mécanique : supprimez le premier en-tête et retirez ce segment de chaque autre en-tête du fichier. Cela vaut la peine d’être fait plutôt que d’être subi, parce que chaque chemin dans la config gagne un niveau en moins et un fichier TOML se lit par ses en-têtes. Le faire à la main force aussi une passe sur le fichier entier, ce qui sur une migration est du temps bien employé.
TOML n’a pas de valeur nulle, et convertir depuis des formats qui en ont — YAML notamment — signifie que des clés disparaissent en silence quand leur valeur est vide. Cela ne peut pas arriver ici, parce que le XML n’a pas de null non plus. Un élément vide et un élément auto-fermant veulent dire la même chose et tous les deux deviennent une chaîne vide, écrite comme deux guillemets.
Donc la garantie pour ce sens est plus forte que pour ses voisins : chaque élément qui avait une valeur dans le XML a une clé dans le TOML. Les chaînes vides sont malgré tout faciles à manquer dans un long fichier, donc si la migration est aussi une occasion de retirer des paramètres que personne n’utilise, chercher les paires vides dans la sortie est la manière la plus rapide de les trouver.
TOML met les dates et les heures dans sa spécification de base — datetimes décalés, datetimes locaux, dates locales et heures locales — et un analyseur les rend comme des dates plutôt que comme des chaînes. YAML a aussi une balise d’horodatage, mais elle appartient à la bibliothèque de types 1.1 plutôt qu’au schéma de base 1.2, donc ce que rend un chargeur dépend du chargeur. Les quatre types de TOML, eux, ne dépendent de rien.
Une valeur XML est du texte, donc une date dans la source arrive comme une chaîne entre guillemets et le reste. Enlever les guillemets de ces valeurs dans la sortie, c’est ce qui les transforme en vraies dates TOML, et cela prend une minute. Le cas inverse mérite aussi d’être surveillé : une valeur écrite 1.0 dans le XML est analysée comme un nombre et écrite comme l’entier TOML 1, donc une version est devenue un entier et a perdu sa forme. La remettre entre guillemets est la correction.
Un élément contenant plusieurs lignes — une description, un bloc de licence, un script incorporé — devient une seule chaîne TOML basique avec des échappements antislash-n là où étaient les sauts de ligne. C’est correct et c’est illisible, et cela défait le but de passer à un format que les gens éditent à la main.
TOML a une syntaxe de chaîne multiligne à triple guillemet qui contient une telle valeur de manière lisible, et l’écrivain ne l’utilise pas. Trouvez les valeurs qui contiennent des échappements et réécrivez chacune en bloc à triple guillemet. Sur la plupart des configs il y en a une ou deux ; sur une config pleine de texte incorporé, c’est un signal que le contenu veut vivre dans son propre fichier plutôt qu’à l’intérieur d’un fichier de paramètres.
Les commentaires sont supprimés, alors que les deux formats les supportent, donc les explications dans l’ancien fichier n’apparaissent pas dans le nouveau. Les espaces de noms cessent de signifier quoi que ce soit à l’instant où les préfixes deviennent des caractères dans une clé. Et le schéma disparaît : le XML peut être validé contre un XSD avant qu’une application ne démarre, et TOML n’a pas de langage de schéma dans sa spécification.
C’est ce dernier point qui est l’échange à faire consciemment. TOML est plus facile à lire, plus facile à écrire à la main et sans ambiguïté sur les types, et il abandonne la capacité de rejeter mécaniquement une config mal formée. Si le XML était réellement validé dans votre build, vous retirez une vérification, et la remplacer — par une vérification au démarrage dans l’application — fait partie de la migration plutôt que comme un extra optionnel.
Ce que l’outil vous donne, c’est chaque valeur du XML, dans la bonne table, avec le bon nom dans la majorité des cas et un nom visiblement faux entre guillemets dans le reste. C’est un bon point de départ et pas un fichier de config fini.
Le travail après est petit et non optionnel : supprimez la table racine, renommez les clés @ et #text, enlevez les guillemets des dates, réécrivez les valeurs multilignes, et recopiez les commentaires depuis l’original. Une heure sur un gros fichier. Sauter cette étape produit une config TOML qui marche et en laquelle personne qui la lira plus tard ne croira qu’elle a été écrite exprès.
| XML | TOML | |
|---|---|---|
| Nom complet | Extensible Markup Language | Tom's Obvious Minimal Language |
| Extension de fichier | .xml | .toml |
| Type de média | application/xml | application/toml |
| Première publication | 1998 | 2013 |
| Publié par | W3C | — |
| Spécification | XML 1.0 | TOML 1.0 |
| Licence | Standard ouvert | Standard ouvert |
| Situation actuelle | Actuel | Actuel |
| S’ouvre dans un navigateur | Tous les navigateurs | Aucun navigateur |
| Envisagé à la place | JSON, YAML | YAML, JSON, INI |
Les commentaires suivent. XML et TOML ont tous deux une syntaxe de commentaire : les notes laissées à la personne suivante ne sont pas jetées en silence.
Aucun navigateur ne lit TOML. C’est le moins portable des deux : mieux vaut s’assurer que le destinataire l’accepte avant de l’envoyer.
Visual Studio Code lit aussi bien XML que TOML : vous pouvez comparer le résultat à l’original sans second logiciel.
Les deux visent des usages différents : XML l’échange entre programmes, TOML la retouche. Cela mérite d’être pesé avant, car ce qui justifie l’un est souvent ce qui rend l’autre malcommode.
XML est le format de W3C, publié en 1998. La spécification est XML 1.0, et elle mérite d’être connue si le fichier doit survivre à l’outil qui l’a écrit.
TOML date de 2013, décrit par TOML 1.0. Visual Studio Code le lit.
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.
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.
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.
XML et TOML décrivent le contenu de façons radicalement différentes. La conversion est donc une reconstitution et non une copie : fidèle, mais pas identique octet pour octet. Les attributs et les nœuds de texte XML deviennent tous deux des clés, ce qui est un arbitrage que le convertisseur fait à votre place.
Aucun navigateur ne lit TOML. C’est le moins portable des deux : mieux vaut s’assurer que le destinataire l’accepte avant de l’envoyer.