ToolDeck

YAML vers XML

Convertit YAML au format XML

Essayer un exemple

Entrée YAML

Sortie XML

Fonctionne localement · Sûr pour coller des secrets
Le XML apparaîtra ici…
Essayez aussi :YAML vers JSON

Qu'est-ce que la conversion YAML vers XML ?

La conversion YAML vers XML transforme des données écrites en YAML (YAML Ain't Markup Language) vers XML (Extensible Markup Language). YAML utilise l'indentation et une ponctuation minimale pour représenter des données structurées, tandis que XML utilise des balises ouvrantes et fermantes avec une hiérarchie explicite. Convertir entre les deux est une tâche courante lorsque des systèmes qui consomment du XML doivent recevoir des données initialement rédigées en YAML.

YAML a été conçu pour la lisibilité humaine. Les fichiers de configuration d'outils comme Kubernetes, Ansible, Docker Compose et GitHub Actions sont écrits en YAML car il est compact et facile à modifier à la main. XML, défini par la spécification W3C XML 1.0, est le format d'échange de données par défaut dans les systèmes d'entreprise, les services web SOAP et les workflows centrés sur les documents depuis des décennies. Lorsqu'une configuration rédigée en YAML doit alimenter un pipeline basé sur XML, la conversion est nécessaire.

Le mapping entre YAML et XML n'est pas bijection. YAML prend en charge nativement des types de données comme les booléens, les entiers, les flottants et null, tandis que XML traite tout le contenu comme du texte sauf si un schéma (XSD ou DTD) définit les types en externe. Les séquences YAML (listes) n'ont pas d'équivalent XML direct et doivent être représentées comme des éléments répétés. Comprendre ces différences vous aide à anticiper la sortie et à éviter les surprises.

Pourquoi utiliser ce convertisseur YAML vers XML ?

Réécrire manuellement du YAML en XML est fastidieux et source d'erreurs, surtout pour les structures profondément imbriquées. Ce convertisseur gère la traduction structurelle instantanément.

Conversion instantanée
Collez du YAML et obtenez une sortie XML formatée immédiatement. Inutile d'écrire un script ou d'installer un outil en ligne de commande pour des conversions ponctuelles.
🔒
Traitement respectueux de la confidentialité
Toute la conversion s'exécute dans votre navigateur. Vos données YAML, qui contiennent souvent des adresses de serveurs, des identifiants et des détails d'infrastructure, ne quittent jamais votre machine.
📋
Sans compte requis
Utilisez le convertisseur sans inscription, connexion ni adresse e-mail. Ouvrez la page et commencez à convertir.
🌐
Gère les structures imbriquées
Prend en charge les mappings YAML profondément imbriqués, les séquences, les types mixtes et les chaînes multilignes. La sortie préserve la hiérarchie avec une indentation XML appropriée.

Cas d'utilisation YAML vers XML

Développement frontend
Convertissez des données mock YAML en XML pour tester des parseurs XML, des transformations XSLT ou des composants qui attendent des réponses XML depuis des API.
Intégration backend
Transformez une configuration YAML en XML pour l'intégration avec des services Java legacy utilisant Spring XML config, des fichiers Maven POM ou des endpoints SOAP.
DevOps et CI/CD
Convertissez des manifests Kubernetes ou Ansible YAML en XML pour des outils qui exigent une entrée XML, comme les configurations de pipeline Jenkins ou certains systèmes de supervision.
QA et tests
Générez des fixtures XML à partir de définitions YAML. YAML est plus facile à maintenir comme données de test, et la conversion en XML au moment du test garde les fixtures lisibles.
Ingénierie des données
Convertissez des configs ETL ou des définitions de schémas au format YAML en XML pour des pipelines qui consomment du XML. Courant en santé (HL7), finance (FpML) et systèmes de données gouvernementaux.
Apprentissage et prototypage
Les étudiants et les débutants peuvent coller du YAML et voir la structure XML équivalente côte à côte, ce qui aide à comprendre intuitivement comment les données hiérarchiques se mappent entre les formats.

Référence de correspondance YAML vers XML

Les types de données YAML ne se mappent pas directement en XML. Ce tableau montre comment chaque construct YAML se traduit en équivalent XML. Comprendre ces règles vous aide à anticiper la sortie et à résoudre des résultats inattendus.

Type YAMLExemple YAMLSortie XML
Mapping (key: value){ name: Alice }<name>Alice</name>
Sequence (- item)- apple\n- banana<item>apple</item><item>banana</item>
Nested mappinguser:\n name: Alice<user><name>Alice</name></user>
Scalar (string)greeting: hello world<greeting>hello world</greeting>
Scalar (number)count: 42<count>42</count>
Scalar (boolean)active: true<active>true</active>
Nullvalue: null<value/>
Multiline stringbio: |\n Line one\n Line two<bio>Line one\nLine two</bio>

YAML vs XML : différences de format

YAML et XML résolvent le même problème — la représentation de données structurées — avec des compromis différents. Ni l'un ni l'autre n'est universellement supérieur ; le bon choix dépend de ce qui consomme les données.

YAML
Délimité par les espaces, sans balises fermantes. Prend en charge les types natifs (bool, int, float, null). Commentaires avec #. Compact pour la configuration et l'édition humaine. Analysé par des bibliothèques comme PyYAML, js-yaml et gopkg.in/yaml.
XML
Basé sur les balises avec des paires ouvrantes/fermantes explicites. Toutes les valeurs sont du texte par défaut ; les types nécessitent un schéma (XSD). Prend en charge les attributs, les espaces de noms, le contenu mixte et les instructions de traitement. Analysé par la bibliothèque standard de tous les langages majeurs.
FonctionnalitéYAMLXML
SyntaxeBasée sur l'indentationBasée sur les balises (&lt;balise&gt;...&lt;/balise&gt;)
Types de donnéesNatifs (string, int, bool, null, float)Texte uniquement (le schéma ajoute les types)
Commentaires# commentaires inline<!-- commentaires bloc -->
AttributsPas de support natifOui (&lt;balise attr="val"&gt;)
Espaces de nomsNon pris en chargeOui (xmlns:prefix)
Taille du fichierPlus petit (pas de balises fermantes)Plus grand (balises verbeux)

Exemples de code

Comment convertir YAML vers XML par programmation dans différents langages et environnements :

JavaScript (Node.js)
import { parseDocument } from 'yaml'
import { js2xml } from 'xml-js'

const yamlStr = `
server:
  host: localhost
  port: 8080
  ssl: true
`

const data = parseDocument(yamlStr).toJSON()
const xml = js2xml({ root: data }, { compact: true, spaces: 2 })
console.log(xml)
// → <root>
// →   <server>
// →     <host>localhost</host>
// →     <port>8080</port>
// →     <ssl>true</ssl>
// →   </server>
// → </root>
Python
import yaml
import xml.etree.ElementTree as ET

yaml_str = """
database:
  host: db.example.com
  port: 5432
  credentials:
    user: admin
    password: secret
"""

data = yaml.safe_load(yaml_str)

def dict_to_xml(tag, d):
    elem = ET.Element(tag)
    for key, val in d.items():
        child = ET.SubElement(elem, key)
        if isinstance(val, dict):
            child.extend(dict_to_xml(key, val))
            elem.remove(child)
            elem.append(dict_to_xml(key, val))
        else:
            child.text = str(val)
    return elem

root = dict_to_xml('root', data)
ET.indent(root, space='  ')
print(ET.tostring(root, encoding='unicode'))
# → <root>
# →   <database>
# →     <host>db.example.com</host>
# →     <port>5432</port>
# →     ...
# →   </database>
# → </root>
Go
package main

import (
    "encoding/xml"
    "fmt"
    "gopkg.in/yaml.v3"
)

type Server struct {
    XMLName xml.Name `xml:"server"`
    Host    string   `yaml:"host" xml:"host"`
    Port    int      `yaml:"port" xml:"port"`
    SSL     bool     `yaml:"ssl"  xml:"ssl"`
}

func main() {
    yamlData := []byte("host: localhost\nport: 8080\nssl: true")

    var s Server
    yaml.Unmarshal(yamlData, &s)

    xmlBytes, _ := xml.MarshalIndent(s, "", "  ")
    fmt.Println(xml.Header + string(xmlBytes))
    // → <?xml version="1.0" encoding="UTF-8"?>
    // → <server>
    // →   <host>localhost</host>
    // →   <port>8080</port>
    // →   <ssl>true</ssl>
    // → </server>
}
CLI (yq + xq)
# Using yq (YAML processor) with xq (XML wrapper around jq)
# Install: pip install yq

# Convert YAML file to XML
yq -x . config.yaml
# → <host>localhost</host><port>8080</port>

# Pipe inline YAML through conversion
echo "name: Alice" | yq -x .
# → <name>Alice</name>

Questions fréquemment posées

Les séquences YAML peuvent-elles être représentées en XML ?
Oui, mais XML n'a pas de type liste natif. Les séquences YAML sont généralement converties en éléments XML répétés portant le même nom de balise. Par exemple, une liste YAML sous la clé "items" devient plusieurs éléments enfants &lt;item&gt;. Certains convertisseurs les enveloppent dans un élément parent &lt;items&gt; pour plus de clarté.
Que se passe-t-il avec les commentaires YAML lors de la conversion ?
Les commentaires YAML (lignes commençant par #) sont supprimés lors de la conversion. La plupart des parseurs YAML éliminent les commentaires lors de la construction de la structure de données, ils ne sont donc pas disponibles pour la sortie XML. Si vous avez besoin de conserver les commentaires, vous aurez besoin d'un parseur YAML qui les conserve, comme ruamel.yaml en Python.
Comment les ancres et alias YAML sont-ils gérés ?
Les ancres YAML (&name) et les alias (*name) sont résolus avant la conversion. Le parseur développe les alias en leurs valeurs complètes, de sorte que le XML résultant contient les données complètes sans aucune référence d'ancre. Cela signifie que la sortie XML peut être plus grande que l'entrée YAML si des ancres étaient utilisées pour éviter les répétitions.
La conversion est-elle réversible (XML vers YAML) ?
Partiellement. Vous pouvez convertir XML vers YAML, mais le résultat peut ne pas correspondre exactement au YAML d'origine. Les attributs XML n'ont pas d'équivalent YAML et sont généralement représentés comme des clés spéciales (par exemple, @attribut). Les informations de type sont également perdues car XML traite tout comme du texte, donc les nombres et les booléens du YAML d'origine deviennent des chaînes après un aller-retour.
Comment gérer les attributs XML lors de la conversion depuis YAML ?
YAML n'a pas de concept natif d'attributs. Une convention courante consiste à préfixer les clés avec @ pour indiquer qu'elles doivent devenir des attributs XML plutôt que des éléments enfants. Par exemple, "@id: 42" sous un mapping produirait &lt;element id="42"&gt;. Cette convention est utilisée par des bibliothèques comme xml-js et xmltodict.
Quelle est la taille maximale de fichier YAML que cet outil peut traiter ?
Le convertisseur s'exécute dans votre navigateur, donc la limite dépend de la mémoire disponible de votre appareil. Les fichiers allant jusqu'à quelques mégaoctets se convertissent sans problème sur du matériel moderne. Pour les fichiers très volumineux (50 Mo et plus), utilisez un outil en ligne de commande comme yq ou un script Python avec PyYAML et lxml, qui gèrent le streaming et la mémoire plus efficacement.
Pourquoi mon YAML produit-il une sortie XML invalide ?
La cause la plus fréquente est des clés YAML qui ne sont pas des noms d'éléments XML valides. Les noms d'éléments XML ne peuvent pas commencer par un chiffre, contenir des espaces ou utiliser la plupart des caractères spéciaux. Des clés comme "2eme-element" ou "ma cle" produiront du XML invalide. Renommez les clés problématiques ou utilisez un convertisseur qui assainit automatiquement les noms (par exemple, en remplaçant les espaces par des underscores et en préfixant par un underscore les noms commençant par un chiffre).