YAML to XML

YAML in XML-Format konvertieren

Beispiel ausprobieren

YAML-Eingabe

XML-Ausgabe

Läuft lokal · Sicher zum Einfügen von Secrets
XML erscheint hier…
Auch ausprobieren:YAML to JSON

Was ist YAML-zu-XML-Konvertierung?

YAML-zu-XML-Konvertierung überführt Daten, die in YAML (YAML Ain't Markup Language) geschrieben sind, in XML (Extensible Markup Language). YAML verwendet Einrückung und minimale Interpunktion, um strukturierte Daten darzustellen, während XML öffnende und schließende Tags mit einer expliziten Hierarchie verwendet. Die Konvertierung zwischen beiden Formaten ist eine Routineaufgabe, wenn Systeme, die XML verarbeiten, Daten empfangen müssen, die ursprünglich in YAML erstellt wurden.

YAML wurde für die Lesbarkeit durch Menschen konzipiert. Konfigurationsdateien für Tools wie Kubernetes, Ansible, Docker Compose und GitHub Actions werden in YAML geschrieben, weil es kompakt und einfach von Hand zu bearbeiten ist. XML, definiert durch die W3C-XML-1.0-Spezifikation, ist seit Jahrzehnten das Standard-Datenaustauschformat in Unternehmenssystemen, SOAP-Webservices und dokumentenzentrierten Workflows. Wenn eine in YAML erstellte Konfiguration in eine XML-basierte Pipeline einfließen muss, ist eine Konvertierung erforderlich.

Die Zuordnung zwischen YAML und XML ist nicht eins zu eins. YAML unterstützt Datentypen wie Boolesche Werte, Integer, Floats und Null nativ, während XML alle Inhalte als Text behandelt, sofern kein Schema (XSD oder DTD) Typen extern definiert. YAML-Sequenzen (Listen) haben kein direktes XML-Äquivalent und müssen als wiederholte Elemente dargestellt werden. Wer diese Unterschiede kennt, kann die Ausgabe besser vorhersagen und unerwartete Ergebnisse vermeiden.

Warum diesen YAML-zu-XML-Konverter verwenden?

YAML manuell als XML neu zu schreiben ist mühsam und fehleranfällig — insbesondere bei tief verschachtelten Strukturen. Dieser Konverter erledigt die strukturelle Übersetzung sofort.

Sofortige Konvertierung
YAML einfügen und sofort formatierten XML-Output erhalten. Für einmalige Konvertierungen ist kein Skript und kein CLI-Tool notwendig.
🔒
Datenschutz an erster Stelle
Die gesamte Konvertierung läuft im Browser. Ihre YAML-Daten, die häufig Serveradressen, Zugangsdaten und Infrastrukturdetails enthalten, verlassen Ihren Rechner nicht.
📋
Kein Konto erforderlich
Den Konverter ohne Registrierung, Anmeldung oder Angabe einer E-Mail-Adresse nutzen. Seite öffnen und direkt mit der Konvertierung beginnen.
🌐
Verarbeitet verschachtelte Strukturen
Unterstützt tief verschachtelte YAML-Mappings, Sequenzen, gemischte Typen und mehrzeilige Strings. Die Ausgabe bewahrt die Hierarchie mit korrekter XML-Einrückung.

Anwendungsfälle für YAML zu XML

Frontend-Entwicklung
YAML-Mockdaten in das XML-Format konvertieren, um XML-Parser, XSLT-Transformationen oder Komponenten zu testen, die XML-Antworten von APIs erwarten.
Backend-Integration
YAML-Konfiguration in XML umwandeln, wenn eine Integration mit Legacy-Java-Diensten erforderlich ist, die Spring-XML-Config, Maven-POM-Dateien oder SOAP-Endpoints verwenden.
DevOps und CI/CD
Kubernetes- oder Ansible-YAML-Manifeste in XML konvertieren für Tools, die XML-Eingaben erfordern — etwa Jenkins-Pipeline-Konfigurationen oder bestimmte Monitoring-Systeme.
QA und Testing
XML-Test-Fixtures aus YAML-Definitionen erzeugen. YAML lässt sich als Testdaten einfacher pflegen, und die Konvertierung zu XML beim Test-Ausführen hält Fixtures lesbar.
Data Engineering
YAML-formatierte ETL-Konfigurationen oder Schema-Definitionen in XML konvertieren, für Pipelines, die XML verarbeiten. Verbreitet im Gesundheitswesen (HL7), Finanzwesen (FpML) und in staatlichen Datensystemen.
Lernen und Prototyping
Studierende und Einsteiger können YAML einfügen und die entsprechende XML-Struktur direkt daneben sehen — das schult das Verständnis, wie hierarchische Daten zwischen Formaten übertragen werden.

YAML-zu-XML-Typ-Mapping-Referenz

YAML-Datentypen lassen sich nicht direkt auf XML übertragen. Die Tabelle zeigt, wie jedes YAML-Konstrukt in sein XML-Äquivalent übersetzt wird. Das Verständnis dieser Regeln hilft, die Ausgabe vorherzusagen und unerwartete Ergebnisse zu beheben.

YAML-TypYAML-BeispielXML-Ausgabe
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: Formatunterschiede

YAML und XML lösen dasselbe Problem — strukturierte Datendarstellung — mit unterschiedlichen Kompromissen. Keines der Formate ist universell überlegen; die richtige Wahl hängt davon ab, wer oder was die Daten verarbeitet.

YAML
Leerzeichenbasiert, keine schließenden Tags. Unterstützt native Typen (bool, int, float, null). Kommentare mit #. Kompakt für Konfiguration und manuelle Bearbeitung. Geparst von Bibliotheken wie PyYAML, js-yaml und gopkg.in/yaml.
XML
Tag-basiert mit expliziten öffnenden/schließenden Paaren. Alle Werte sind standardmäßig Text; Typen erfordern ein Schema (XSD). Unterstützt Attribute, Namensräume, gemischte Inhalte und Verarbeitungsanweisungen. In der Standardbibliothek jeder wichtigen Programmiersprache verfügbar.
MerkmalYAMLXML
SyntaxEinrückungsbasiertTag-basiert (&lt;tag&gt;...&lt;/tag&gt;)
DatentypenNativ (string, int, bool, null, float)Nur Text (Schema fügt Typen hinzu)
Kommentare# Inline-Kommentare<!-- Block-Kommentare -->
AttributeKeine native UnterstützungJa (&lt;tag attr="val"&gt;)
NamensräumeNicht unterstütztJa (xmlns:prefix)
DateigrößeKleiner (keine schließenden Tags)Größer (ausführliche Tags)

Code-Beispiele

Wie man YAML programmatisch in verschiedenen Sprachen und Umgebungen in XML konvertiert:

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>

Häufig gestellte Fragen

Können YAML-Sequenzen in XML dargestellt werden?
Ja, aber XML hat keinen nativen Listentyp. YAML-Sequenzen werden typischerweise in wiederholte XML-Elemente mit demselben Tag-Namen konvertiert. Beispielsweise wird eine YAML-Liste unter dem Schlüssel "items" zu mehreren untergeordneten &lt;item&gt;-Elementen. Manche Konverter umschließen sie in einem übergeordneten &lt;items&gt;-Element zur besseren Übersichtlichkeit.
Was passiert mit YAML-Kommentaren bei der Konvertierung?
YAML-Kommentare (Zeilen, die mit # beginnen) werden bei der Konvertierung verworfen. Die meisten YAML-Parser entfernen Kommentare beim Aufbau der Datenstruktur, sodass sie für die XML-Ausgabe nicht verfügbar sind. Sollen Kommentare erhalten bleiben, wird ein YAML-Parser benötigt, der diese beibehält — beispielsweise ruamel.yaml in Python.
Wie werden YAML-Anker und -Aliase behandelt?
YAML-Anker (&name) und Aliase (*name) werden vor der Konvertierung aufgelöst. Der Parser expandiert Aliase zu ihren vollständigen Werten, sodass das resultierende XML die vollständigen Daten ohne Anker-Referenzen enthält. Das bedeutet, die XML-Ausgabe kann größer als die YAML-Eingabe sein, wenn Anker zur Vermeidung von Wiederholungen verwendet wurden.
Ist die Konvertierung umkehrbar (XML zurück zu YAML)?
Teilweise. XML lässt sich zu YAML konvertieren, aber das Ergebnis stimmt möglicherweise nicht exakt mit dem ursprünglichen YAML überein. XML-Attribute haben kein YAML-Äquivalent und werden typischerweise als spezielle Schlüssel dargestellt (z. B. @attribute). Typinformationen gehen ebenfalls verloren, da XML alles als Text behandelt — Zahlen und Boolesche Werte aus dem ursprünglichen YAML werden nach einem Roundtrip zu Strings.
Wie werden XML-Attribute bei der Konvertierung aus YAML behandelt?
YAML kennt kein natives Konzept für Attribute. Eine verbreitete Konvention ist, Schlüssel mit @ zu präfixen, um anzuzeigen, dass sie XML-Attribute statt untergeordneter Elemente werden sollen. Beispielsweise erzeugt "@id: 42" unter einem Mapping &lt;element id="42"&gt;. Diese Konvention wird von Bibliotheken wie xml-js und xmltodict verwendet.
Wie groß darf die YAML-Datei maximal sein?
Der Konverter läuft im Browser, daher hängt die Grenze vom verfügbaren Arbeitsspeicher des Geräts ab. Dateien bis zu einigen Megabyte werden auf moderner Hardware problemlos konvertiert. Für sehr große Dateien (50 MB+) empfiehlt sich ein Kommandozeilentool wie yq oder ein Python-Skript mit PyYAML und lxml, die Streaming und Speicher effizienter verwalten.
Warum erzeugt mein YAML eine ungültige XML-Ausgabe?
Der häufigste Grund sind YAML-Schlüssel, die keine gültigen XML-Elementnamen sind. XML-Elementnamen dürfen nicht mit einer Ziffer beginnen, keine Leerzeichen enthalten oder die meisten Sonderzeichen verwenden. Schlüssel wie "2nd-item" oder "my key" erzeugen ungültiges XML. Die betroffenen Schlüssel umbenennen oder einen Konverter verwenden, der Namen automatisch bereinigt (z. B. durch Ersetzen von Leerzeichen durch Unterstriche und Voranstellen eines Unterstrichs bei numerisch beginnenden Namen).