100 % local — vos données ne quittent jamais votre navigateur

XML en YAML — lisible en une étape

Convertissez du XML en YAML. L’arbre devient de l’indentation au lieu de balises, ce qui est en général la raison pour laquelle on le sort du XML.

Instantané Privé Zéro cookie
Indentation

Entrée XML

Sortie YAML

Ce que fait cet outil

Le document devient un dictionnaire YAML, de la même forme que celle produite par XML vers JSON : les attributs en clés préfixées @_, le texte sous #text quand un élément porte les deux, une séquence quand un élément se répète.

<user id="1"><name>Ada</name></user>
user:
  name: Ada
  "@_id": "1"

Pourquoi ces clés sont citées

Deux des caractères que produit cette correspondance sont réservés en YAML.

@ ne peut pas commencer un scalaire nu — la spécification le réserve — donc @_id doit être cité. # ouvre un commentaire : #text écrit nu ferait disparaître la fin de la ligne. Les guillemets ne sont pas un ornement, c’est la seule façon de les écrire.

Pourquoi certaines valeurs le sont aussi

YAML a deux versions largement utilisées, et elles ne s’accordent pas sur le sens d’un mot nu.

écrit nuYAML 1.2 litYAML 1.1 lit
NOla chaîne NOfaux
yesla chaîne yesvrai
12:30la chaîne 12:30750 (sexagésimal)
2026-01-01la chaîneun horodatage

YAML 1.2 est ce qu’écrivent la plupart des bibliothèques JavaScript. YAML 1.1 est ce qu’implémente PyYAML, et PyYAML est ce avec quoi une très large part du monde lit effectivement du YAML.

Un code pays NO écrit nu devient donc False en Python. C’est le « problème norvégien », et rien dans le fichier ne le signale : le document reste valide dans les deux cas, il cesse simplement de vouloir dire la même chose.

Cet outil met des guillemets exactement autour de ces scalaires ambigus, et autour d’eux seuls. Un vrai booléen reste true, un vrai null reste null, un mot ordinaire reste nu. La sortie est du YAML 1.2 valide, et les deux lecteurs y retrouvent les mêmes valeurs.

Le texte multiligne

Un texte contenant des sauts de ligne devient un scalaire de bloc :

a: |-
  première ligne
  seconde ligne

C’est la forme lisible que YAML prévoit exactement pour cela, et elle fait l’aller-retour sans échappement.

Confidentiel par conception

Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.

Questions fréquentes

Pourquoi certaines clés sont-elles entre guillemets et pas d’autres ?
Parce que YAML réserve deux caractères que cette conversion produit. `@` ne peut pas commencer un scalaire nu — la spécification le garde pour un usage futur — donc une clé d’attribut `@_id` doit être citée. `#` ouvre un commentaire : `#text` doit l’être aussi. Tout le reste s’écrit nu.
Pourquoi mon NO est-il entre guillemets ? Je le voulais nu.
Parce que nu, il cesserait d’être la chaîne `NO` pour une bonne part des lecteurs. YAML 1.1, qu’implémente PyYAML, lit `NO` nu comme le booléen faux — le fameux « problème norvégien ». Les guillemets coûtent deux caractères et gardent au code pays son statut de code pays.
Comment obtenir une liste quand il n’y a qu’un élément ?
Vous ne le pouvez pas à partir du seul document : un `<item>` et une liste d’un `<item>` s’écrivent exactement pareil en XML, et seul un schéma les distingue. Un élément donne un dictionnaire, deux ou plus donnent une séquence. Normalisez du côté consommateur s’il lui faut une liste dans les deux cas.

Convertisseurs associés