XML to YAML

XML in YAML-Format konvertieren

Beispiel ausprobieren

XML-Eingabe

YAML-Ausgabe

Läuft lokal · Sicher zum Einfügen von Secrets
YAML erscheint hier…

Was ist XML-zu-YAML-Konvertierung?

XML-zu-YAML-Konvertierung überführt Daten von Extensible Markup Language (XML) in YAML Ain't Markup Language (YAML). XML verwendet spitze Klammern-Tags mit Attributen, um hierarchische Daten zu beschreiben, während YAML dieselben Strukturen durch Einrückung und einfache Schlüssel-Wert-Paare darstellt. XML zu YAML online zu konvertieren ist eine häufige Aufgabe bei der Migration von Konfigurationen aus XML-lastigen Systemen wie Java Spring, Maven oder .NET zu Plattformen, die YAML bevorzugen — etwa Kubernetes, Ansible, GitHub Actions und Docker Compose.

Die beiden Formate unterscheiden sich in ihren Datenmodellen. XML behandelt alles standardmäßig als Text und verlässt sich für die Typprüfung auf Schema-Definitionen (XSD, DTD). YAML besitzt native Typen: Strings, Integer, Floats, Boolesche Werte, Nullwerte, Sequenzen (Arrays) und Mappings (Objekte). Bei der Konvertierung können Werte wie "true", "5432" und "3.14" als native YAML-Typen interpretiert werden, anstatt als Strings zu verbleiben. Ein sorgfältiger Konverter setzt diese Werte in Anführungszeichen, um die ursprüngliche Textdarstellung aus der XML-Quelle zu bewahren.

XML unterstützt außerdem Konstrukte ohne YAML-Entsprechung: Attribute, Namensräume, Verarbeitungsanweisungen, CDATA-Abschnitte und Kommentare. Bei der Konvertierung muss eine Konvention für die Darstellung von Attributen gewählt werden (üblicherweise mit Unterstrich-Präfix wie _attr), und die übrigen Konstrukte werden verworfen oder eingeebnet. Diese Kompromisse vor der Konvertierung zu kennen hilft Ihnen, das richtige Tool zu wählen, es korrekt zu konfigurieren und die YAML-Ausgabe auf Übereinstimmung mit dem ursprünglichen XML zu prüfen.

XML input
<server>
  <host>db.example.com</host>
  <port>5432</port>
  <credentials admin="true">
    <username>deploy</username>
    <password>s3cret</password>
  </credentials>
  <options>
    <option>ssl=true</option>
    <option>timeout=30</option>
  </options>
</server>
YAML output
server:
  host: db.example.com
  port: "5432"
  credentials:
    _admin: "true"
    username: deploy
    password: s3cret
  options:
    option:
      - ssl=true
      - timeout=30

Warum einen Online-XML-zu-YAML-Konverter verwenden?

Ein Konvertierungsskript von Hand zu schreiben bedeutet, sich mit Attribut-Mapping, Array-Erkennung für wiederholte Elemente und YAML-Typumwandlungs-Sonderfällen auseinanderzusetzen. Ein browserbasierter Konverter erledigt all das in einem Schritt und ermöglicht es, die YAML-Ausgabe direkt zu prüfen und in Konfigurationsdateien zu kopieren.

Sofortige Konvertierung
XML einfügen und YAML-Ausgabe in Millisekunden erhalten. Keine Bibliotheksinstallation, kein Build-Schritt, kein Skript zu pflegen.
🔒
Datenschutz an erster Stelle
Die Konvertierung läuft vollständig im Browser per JavaScript. Ihre XML-Daten verbleiben auf Ihrem Rechner und werden nie an einen Server gesendet.
🔀
Handhabt Attribute und Arrays
XML-Attribute werden auf Schlüssel mit Präfix abgebildet. Wiederholte Geschwisterelemente werden automatisch zu YAML-Sequenzen gruppiert, sodass Listenstrukturen erhalten bleiben.
📋
Kein Konto erforderlich
Seite öffnen, XML einfügen, YAML-Ergebnis kopieren. Keine Registrierung, kein API-Schlüssel, keine Nutzungsbeschränkungen.

Anwendungsfälle für XML zu YAML

Frontend-Entwicklung
XML-Konfigurations-Snippets aus Legacy-Build-Tools (Ant, Maven) in YAML für moderne CI-Pipelines wie GitHub Actions oder GitLab CI konvertieren, die YAML-Konfigurationsdateien erwarten.
Backend-Entwicklung
Spring-XML-Bean-Definitionen in das application.yml-Format von Spring Boot migrieren oder .NET-app.config-Abschnitte in YAML für Container-Deployments konvertieren.
DevOps und Infrastruktur
XML-basierte Deployment-Deskriptoren (Tomcat server.xml, IIS web.config) in YAML-Äquivalente für Kubernetes-Manifeste, Helm Charts oder Ansible Playbooks umwandeln.
QA und Testing
XML-Test-Fixtures oder JUnit-Konfiguration in YAML für Test-Frameworks konvertieren, die YAML-Datenquellen unterstützen — beispielsweise pytest mit YAML-Fixtures oder Robot Framework.
Data Engineering
XML-Datenexporte aus Enterprise-Systemen (SAP, Oracle) in YAML umwandeln, um sie von ETL-Tools wie dbt oder Airflow zu verarbeiten, die YAML-basierte Konfigurationen und Schemas verwenden.
Lernen und Dokumentation
Studenten und technische Redakteure können XML-Beispiele einfügen, um zu sehen, wie Elemente, Attribute und Verschachtelungen in YAML-Einrückungen, Sequenzen und Mappings übersetzt werden.

XML-zu-YAML-Mapping-Referenz

XML und YAML haben unterschiedliche Datenmodelle. Die Tabelle unten zeigt, wie jedes XML-Konstrukt auf ein YAML-Äquivalent abgebildet wird. Attribute werden typischerweise in Schlüssel mit Unterstrich-Präfix konvertiert, und wiederholte Elemente werden zu YAML-Sequenzen. Konstrukte wie Kommentare und Verarbeitungsanweisungen haben keine YAML-Entsprechung und werden bei der Konvertierung verworfen.

XML-KonstruktXML-BeispielYAML-Äquivalent
Element<name>text</name>name: text
Nested elements<a><b>1</b></a>a:\n b: "1"
Attributes<el attr="v"/>el:\n _attr: v
Text + attributes<el a="1">text</el>el:\n _a: "1"\n _text: text
Repeated elements<r><i>1</i><i>2</i></r>r:\n i:\n - "1"\n - "2"
Empty element<el/>el: ""
CDATA<![CDATA[raw]]>Treated as plain text
Comments<!-- note -->Discarded (no YAML equivalent)
Namespacesxmlns:ns="uri"Prefix preserved or stripped
Boolean-like text<flag>true</flag>flag: "true" (quoted to stay string)

XML vs. YAML: Unterschiede im Datenmodell

Die Konvertierung zwischen XML und YAML ist kein einfacher Syntaxtausch. Die Formate haben grundlegende strukturelle Unterschiede, die beeinflussen, wie Daten nach der Konvertierung dargestellt werden.

Typsystem
XML speichert alle Werte als Textstrings. YAML besitzt native Boolesche Werte, Integer, Floats und Nullwerte. Bei der Konvertierung kann ein Wert wie "true" oder "3306" als YAML-Boolean oder -Integer neu interpretiert werden, sofern der Konverter ihn nicht in Anführungszeichen setzt. Überprüfen Sie typsensitive Werte in der Ausgabe immer sorgfältig.
Attribute versus Schlüssel
XML-Elemente können Attribute neben untergeordneten Elementen und Textinhalt tragen. YAML kennt nur Schlüssel-Wert-Mappings. Attribute müssen in reguläre Schlüssel konvertiert werden, typischerweise mit einem Präfix wie _ oder @, um sie von untergeordneten Elementen zu unterscheiden.
Reihenfolge und Duplikate
XML bewahrt die Dokumentreihenfolge und erlaubt Geschwisterelemente mit demselben Tag-Namen. YAML-Mappings sind laut Spezifikation ungeordnet (obwohl die meisten Parser die Einfügereihenfolge bewahren), und doppelte Schlüssel sind in YAML 1.2 verboten. Wiederholte XML-Elemente müssen zu einer YAML-Sequenz werden.

Code-Beispiele

Nachfolgend finden Sie funktionierende Beispiele für die Konvertierung von XML zu YAML in JavaScript, Python, Go und auf der Kommandozeile. Jedes Beispiel behandelt verschachtelte Elemente, Attribute und wiederholte Geschwister-Tags.

JavaScript (Node.js)
import { parseStringPromise } from 'xml2js'
import YAML from 'yaml'

const xml = `
<config>
  <database host="localhost" port="5432">
    <name>mydb</name>
  </database>
  <features>
    <feature>auth</feature>
    <feature>logging</feature>
  </features>
</config>`

const obj = await parseStringPromise(xml, { explicitArray: false })
console.log(YAML.stringify(obj))
// → config:
// →   database:
// →     $:
// →       host: localhost
// →       port: "5432"
// →     name: mydb
// →   features:
// →     feature:
// →       - auth
// →       - logging
Python
import xmltodict
import yaml

xml = """
<server>
  <host>db.example.com</host>
  <port>5432</port>
  <replicas>
    <replica>node-1</replica>
    <replica>node-2</replica>
  </replicas>
</server>
"""

# Step 1: XML → Python dict
data = xmltodict.parse(xml)

# Step 2: Python dict → YAML
print(yaml.dump(data, default_flow_style=False))
# → server:
# →   host: db.example.com
# →   port: '5432'
# →   replicas:
# →     replica:
# →     - node-1
# →     - node-2

# With the standard library only (no xmltodict)
import xml.etree.ElementTree as ET

def elem_to_dict(elem):
    d = {}
    if elem.attrib:
        d.update({f"_{k}": v for k, v in elem.attrib.items()})
    for child in elem:
        val = elem_to_dict(child)
        if child.tag in d:
            if not isinstance(d[child.tag], list):
                d[child.tag] = [d[child.tag]]
            d[child.tag].append(val)
        else:
            d[child.tag] = val
    if elem.text and elem.text.strip():
        text = elem.text.strip()
        return text if not d else {**d, "_text": text}
    return d

root = ET.fromstring(xml)
print(yaml.dump({root.tag: elem_to_dict(root)}, default_flow_style=False))
CLI (xq + yq)
# xq is part of the yq package (pip install yq)
# It parses XML via xq and outputs JSON, then pipe to yq for YAML

echo '<config><host>localhost</host><port>8080</port></config>' | xq . | yq -y .
# → config:
# →   host: localhost
# →   port: "8080"

# Using xmlstarlet + yq (Go version: https://github.com/mikefarah/yq)
xmlstarlet sel -t -c '/' input.xml | yq -p=xml -o=yaml
# Reads XML from file and outputs YAML directly
Go
package main

import (
	"encoding/xml"
	"fmt"
	"strings"

	"gopkg.in/yaml.v3"
)

type Server struct {
	XMLName xml.Name `xml:"server"`
	Host    string   `xml:"host" yaml:"host"`
	Port    int      `xml:"port" yaml:"port"`
	Options []string `xml:"options>option" yaml:"options"`
}

func main() {
	data := `<server>
		<host>db.example.com</host>
		<port>5432</port>
		<options><option>ssl=true</option><option>timeout=30</option></options>
	</server>`

	var srv Server
	xml.NewDecoder(strings.NewReader(data)).Decode(&srv)

	out, _ := yaml.Marshal(srv)
	fmt.Println(string(out))
	// → host: db.example.com
	// → port: 5432
	// → options:
	// →   - ssl=true
	// →   - timeout=30
}

Häufig gestellte Fragen

Ist die XML-zu-YAML-Konvertierung verlustfrei?
Nicht vollständig. XML-Attribute, Kommentare, Verarbeitungsanweisungen und CDATA-Abschnitte haben kein natives YAML-Äquivalent. Attribute können als Schlüssel mit Präfix erhalten bleiben (_attr oder @attr), aber Kommentare und Verarbeitungsanweisungen werden verworfen. Wenn Sie den Roundtrip zurück zu XML benötigen, prüfen Sie, ob Attribute und Namensraumdeklarationen die Konvertierung überstanden haben.
Wie werden XML-Attribute in YAML dargestellt?
Die meisten Konverter versehen Attributnamen mit einem Unterstrich (_) oder @-Symbol als Präfix, um sie von untergeordneten Element-Schlüsseln zu unterscheiden. Beispielsweise wird <server port="8080"> zu server:\n _port: "8080". Das konkrete Präfix hängt von der verwendeten Bibliothek oder dem Tool ab.
Was passiert mit wiederholten XML-Elementen bei der Konvertierung?
Wenn dasselbe Element-Tag mehrfach unter einem übergeordneten Element erscheint, gruppiert der Konverter sie zu einer YAML-Sequenz (Liste). Beispielsweise werden zwei <item>-Geschwister zu item:\n - value1\n - value2. Ein einzelnes <item> bleibt als skalarer Wert, sofern der Force-Array-Modus nicht aktiviert ist.
Kann ich YAML wieder in XML konvertieren?
Ja, aber das Ergebnis hängt davon ab, wie die ursprüngliche Konvertierung Attribute und Typen behandelt hat. Wurden Attribute mit Präfix-Schlüsseln bewahrt, kann ein YAML-zu-XML-Konverter sie rekonstruieren. ToolDeck bietet ein YAML-zu-XML-Tool für die umgekehrte Richtung an. Beachten Sie, dass native YAML-Typen (Boolesche Werte, Zahlen) in XML zu Textstrings werden.
Warum setzt die YAML-Ausgabe manche Werte in Anführungszeichen?
YAML besitzt native Typen: true/false sind Boolesche Werte, bloße Zahlen werden zu Integer oder Float, und yes/no/on/off sind in YAML 1.1 ebenfalls Boolesche Werte. Wenn Ihr XML Text wie "true" oder "3306" enthält, der als String erhalten bleiben soll, setzt der Konverter ihn in Anführungszeichen, um eine Neuinterpretation durch YAML-Parser zu verhindern. Das ist korrektes Verhalten, kein Fehler.
Wie gehe ich mit großen XML-Dateien um?
Browserbasierte Konverter funktionieren gut für Dateien bis zu einigen Megabyte. Für größere Dateien (10 MB+) empfiehlt sich ein Streaming-Ansatz: XML mit Pythons iterparse oder Node.js sax parsen, das Zwischenobjekt schrittweise aufbauen und anschließend als YAML serialisieren. Tools wie yq können XML auch direkt auf der Kommandozeile in YAML konvertieren, ohne das gesamte Dokument in den Arbeitsspeicher zu laden.
Was ist der Unterschied zwischen XML-zu-YAML- und XML-zu-JSON-Konvertierung?
Beide Konvertierungen stehen vor derselben Herausforderung, XML-Attribute und wiederholte Elemente auf ein anderes Datenmodell abzubilden. Der Hauptunterschied liegt im Ausgabeformat. JSON ist streng (keine Kommentare, explizite Typen, strikte Syntax), während YAML eine Obermenge von JSON ist und menschenfreundliche Funktionen hinzufügt: Kommentare, mehrzeilige Strings, Anker und Aliase. Wählen Sie JSON, wenn der Verbraucher eine API oder eine JavaScript-Laufzeit ist. Wählen Sie YAML, wenn der Verbraucher ein Mensch ist, der Konfigurationsdateien bearbeitet.