araç köşesi

XML en YAML

Convertissez une configuration XML en YAML : attributs préfixés par @, balises répétées en liste, valeurs qui ressemblent à des nombres entre guillemets

Vos données restent chez vous. La conversion se fait dans le navigateur ; rien n'est envoyé à un serveur.

Comment ça marche

Vous devez passer la configuration XML d'un ancien projet Java, ou la sortie XML d'un service, vers un manifeste Kubernetes, un playbook Ansible ou le fichier application.yml de Spring Boot ? Collez le XML dans le panneau de gauche : le YAML s'affiche à droite dès le collage. La balise racine devient la clé de premier niveau : un document qui commence par <serveur> commence par la ligne « serveur: ». Un attribut reçoit un @ devant son nom (env="production" → "@env": production), et une balise présente deux fois sous le même parent (deux <droit>) devient une liste sous une seule clé. XML ne connaît ni nombre ni booléen : <port>8080</port> est du texte. YAML, lui, lit 8080 sans guillemets comme un nombre et on comme true dans les anciens analyseurs. L'outil écrit donc « 8080 » et « on » entre guillemets et indique combien de valeurs il a protégées. Ne retirez les guillemets que si le programme cible attend vraiment un nombre. Indentation : 2 ou 4 espaces, la tabulation est interdite en YAML. Les commentaires, instructions de traitement (<?...?>) et DOCTYPE ne sont pas repris.

Cet outil est aussi connu sous le nom de convertir xml en yaml, xml en yaml, xml to yaml, convertisseur xml yaml, xml vers yaml en ligne.

Qu'est-ce que YAML ?

YAML est un format de données qui montre la structure par l'indentation plutôt que par des accolades ; les manifestes Kubernetes, les workflows GitHub Actions, docker-compose et le fichier application.yml de Spring Boot l'utilisent. Chaque ligne a la forme « clé: valeur » ou « - élément », l'imbrication se fait avec des espaces et la tabulation est interdite. L'analyseur devine le type des valeurs sans guillemets : pratique à la main, risqué pour des données venues de XML, où tout est texte.

Qu'est-ce que Attribut XML ?

Un attribut est une information ajoutée dans la balise ouvrante sous la forme nom="valeur" : dans <serveur env="production">, env est un attribut. YAML ne distingue pas attributs et éléments enfants, les deux deviennent des clés. Le convertisseur place donc un @ devant le nom de l'attribut : la distinction est conservée et, quand on regénère du XML depuis le YAML, on sait quelles clés étaient des attributs.

Quelle est la différence entre XML et YAML ?

XML place chaque valeur entre une balise ouvrante et une balise fermante, peut porter des attributs et se valide avec un schéma (XSD) ; le prix, c'est la longueur. YAML écrit la même structure avec l'indentation, sans balises, beaucoup plus court, d'où son usage pour les fichiers de configuration édités à la main. La grande différence concerne les types : en XML, 8080 est du texte ; en YAML, 8080 sans guillemets est un nombre. Attributs et texte mixte n'ont pas d'équivalent YAML et passent par des conventions comme @ et #text.

Le piège : « on » dans le XML devient true en YAML

XML transporte chaque valeur sous forme de texte ; c'est le schéma ou le programme qui fixe le type. YAML devine seul le type d'une valeur sans guillemets : 8080 est un nombre, true un booléen, null une valeur vide. Les analyseurs YAML 1.1 (PyYAML, anciennes versions de Ruby, certaines versions d'Ansible) traitent aussi yes, no, on, off et les dates comme 2026-09-27. Sans guillemets, <https>on</https> deviendrait true, et NO (Norvège) dans une liste de pays deviendrait false.

La même protection vaut pour les identifiants avec un zéro initial, comme un numéro de téléphone 0612… : lu comme un nombre, il perdrait son zéro. Avec les guillemets, le lecteur YAML voit exactement le texte du XML.

  • <port>8080</port> → port: "8080"
  • <https>on</https> → https: "on" (sans guillemets = true en YAML 1.1)
  • <pays>NO</pays> → pays: "NO" (sans guillemets = false)
  • <nom>coin-outils</nom> → nom: coin-outils (pas besoin de guillemets)

Attributs, listes et texte mixte : les règles d'écriture

Trois structures XML n'ont pas d'équivalent direct en YAML. Pour les trois, l'outil suit les mêmes règles que le convertisseur XML vers JSON, afin que les deux sorties se correspondent. Un attribut devient une clé précédée de @ : <produit id="7"> → "@id": "7". Comme @ est réservé en YAML, la clé est écrite entre guillemets.

Une balise répétée sous le même parent devient une liste ; une balise unique, non. Si un <produit> est seul, le YAML montre donc un mappage et pas une liste : tenez-en compte si votre code attend toujours une liste. Quand un élément contient à la fois du texte et des balises, le texte va sous la clé « #text ». Le convertisseur YAML vers XML applique les mêmes règles en sens inverse.

Questions fréquentes

Comment convertir un fichier XML en YAML ?

Ouvrez le fichier XML dans un éditeur de texte, copiez son contenu et collez-le dans le panneau de gauche de cette page. Le YAML apparaît immédiatement à droite ; choisissez 2 ou 4 espaces d'indentation, puis copiez le résultat ou téléchargez-le en .yaml. Si le XML est mal formé, le message indique la balise et le numéro de ligne.

Pourquoi certaines valeurs sont-elles entre guillemets dans le YAML ?

En XML, chaque valeur est du texte, mais YAML lit 8080 sans guillemets comme un nombre, on et yes comme true, NO comme false. Pour garder le sens, l'outil met ces valeurs entre guillemets et affiche leur nombre. Si le programme cible attend un nombre, vous pouvez retirer les guillemets vous-même.

Les attributs XML sont-ils perdus en YAML ?

Non. Chaque attribut devient une clé précédée de @ : <serveur env="production"> → "@env": production. Les déclarations d'espace de noms (xmlns) sont aussi conservées comme attributs. Le convertisseur YAML vers XML les retransforme en attributs.

Mon XML est-il envoyé à un serveur ?

Non. La lecture du XML et l'écriture du YAML se font entièrement dans votre navigateur : les mots de passe ou adresses de serveur de votre configuration ne quittent pas cette page. Une fois chargée, la page fonctionne même sans connexion.