YAML in XML umwandeln

YAML kannst du hier kostenlos und ohne Konto in XML umwandeln: Datei oben ablegen, und ein, zwei Sekunden später steht das Ergebnis zum Herunterladen bereit. Die Umwandlung läuft in deinem eigenen Browser, die Datei wird also nie hochgeladen — das klappt unter Windows, macOS und Linux ebenso wie auf iPhone und Android, und es funktioniert selbst dann noch, wenn du das Netz abschaltest.

  • Wo es läuft In deinem Browser. Die Datei wird nicht hochgeladen.
  • Verlustfrei Es geht nichts verloren. XML enthält genau das, was auch YAML enthielt.
  • Größenbegrenzung Bis 100 MB pro Datei, kostenlos und ohne Konto.

Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.

Wenn die Konfiguration in YAML lebt und die Schnittstelle XML verlangt

Der Anlass für diese Umwandlung ist fast immer eine Vorgabe von außen. Ein deutsches Behördenverfahren, das nach einem XÖV-Standard integriert, eine Schnittstelle im automobilen Zulieferwesen, die VDA-XML erwartet, oder eine ältere Middleware, deren Vertrag ein XSD ist und kein JSON-Schema. Das eigene Team schreibt Konfiguration und Testdaten längst in YAML, weil sich das ohne Anführungszeichen tippen lässt — die Gegenstelle liest davon nichts.

Diese Ausgangslage entscheidet, was ein gutes Ergebnis ist. Es geht nicht darum, dass die XML-Datei elegant aussieht, sondern darum, dass sie exakt die Form annimmt, die das Schema am anderen Ende verlangt. Genau dafür sind Elemente allein zu wenig — die meisten realen Schemas verlangen auch Attribute, und dieser Konverter bietet einen Weg, sie gezielt zu erzeugen.

Wie aus einer YAML-Zuordnung ein Baum aus Tags wird

Jeder Schlüssel wird zu einem Element, sein Wert zum Inhalt dieses Elements. Eine verschachtelte Zuordnung wird zu einem verschachtelten Element, ein Skalar zu Text zwischen öffnendem und schließendem Tag. An der Übersetzung ist nichts raffiniert, und genau das will man, wenn das Ergebnis gegen eine fremd geschriebene Spezifikation bestehen muss.

Werte werden als Text geschrieben, weil ein XML-Element nichts anderes fassen kann. Eine YAML-Zahl, im Quelltext als 1.50 notiert, kommt als 1.5 heraus, weil der Parser die Nachkommazahl vorher schon in eine Zahl aufgelöst und die überflüssige Null dabei verworfen hat. Wird dieselbe Zahl im deutschen Format mit Komma geschrieben, 1,50, erkennt der YAML-Parser darin gar keine Zahl — Komma ist kein gültiges Dezimaltrennzeichen in YAML —, der Wert bleibt eine Zeichenkette und kommt unverändert als 1,50 heraus. Verlangt das empfangende Schema eine bestimmte Schreibweise — eine Dezimalzahl mit fester Nachkommastelle, ein Datum mit Zeitzone —, muss der Wert in der YAML-Datei als Zeichenkette in Anführungszeichen stehen, damit er unverändert durchkommt.

Welcher YAML-Schlüssel zum Wurzelelement wird

XML verlangt genau ein äußerstes Element, ein YAML-Dokument kann mehrere Schlüssel auf oberster Ebene haben. Die Regel: Ein einzelner oberster Schlüssel wird zur Wurzel, egal was er enthält — außer es ist eine Liste. Ein Dokument mit dem einzigen Schlüssel bestellung wird also zu einem bestellung-Wurzelelement, ein Dokument mit drei obersten Schlüsseln bekommt eine generische Hülle mit drei Kindern.

Der Fall, der Integrationsteams überrascht, ist ein einzelner oberster Schlüssel, dessen Wert eine Liste ist — auch der bekommt die generische Hülle, denn den Schlüssel selbst als Wurzel zu nehmen, würde das Tag einmal pro Listenelement wiederholen und ein Dokument mit mehreren äußersten Elementen ergeben, was kein gültiges XML ist. Verlangt das Zielschema einen bestimmten Wurzelnamen — bei einer Anbindung an ein XÖV-Verfahren steht der meist fest —, gehört genau ein oberster Schlüssel mit diesem Namen in die YAML-Datei, und alles Weitere darunter.

Listen werden zu wiederholten Tags, nicht zu einer Hülle

Eine YAML-Sequenz unter einem Schlüssel erzeugt diesen Schlüssel einmal pro Eintrag. Drei Positionen unter einem Schlüssel namens position werden zu drei position-Elementen nebeneinander. Das ist das ältere und verbreitetere XML-Idiom, und es entspricht dem, was ein XSD mit maxOccurs="unbounded" erwartet.

Es ist nicht das einzige. Viele Schemas — gerade in deutschen Verwaltungs- und Industriestandards — wollen eine Plural-Hülle mit Singular-Kindern darin, etwa ein positionen-Element mit mehreren position-Kindern. Aus einer einfachen Liste erzeugt dieser Konverter das nicht von selbst. Man bekommt es, indem man die YAML entsprechend schachtelt: ein Schlüssel positionen, dessen Wert eine Zuordnung mit einem einzigen Schlüssel position ist, der die Liste hält. Die Schachtelung in der Quelle bestimmt die Schachtelung in der Ausgabe.

Attribute aus einer YAML-Datei erzeugen

Reine Element-XML ist für Daten in Ordnung und für die meisten realen Schemas falsch, die Kennungen, Typen oder Sprachcodes in Attribute legen. Zwei Schlüsselnamen geben Kontrolle darüber. Ein Schlüssel, dessen Name mit @ beginnt, wird zum Attribut des umschließenden Elements, das @ wird dabei entfernt. Ein Schlüssel namens #text wird zum eigenen Textinhalt des Elements.

Ausformuliert: Eine YAML-Zuordnung namens auftrag mit "@id" gleich 42, "@status" gleich offen und einem Schlüssel kunde ergibt ein auftrag-Element mit den Attributen id und status sowie einem kunde-Kind darin. "@lang" und "#text" in derselben Zuordnung ergeben ein einzelnes Tag mit Attribut und Text, ohne Kinder. Beide Schlüssel müssen in der YAML-Datei in Anführungszeichen stehen, denn @ am Anfang eines nicht zitierten Skalars ist reserviert und # würde einen Kommentar einleiten.

Schlüsselnamen, die XML nicht zulässt, und was mit ihnen geschieht

XML-Elementnamen erlauben Buchstaben, Ziffern, Unterstriche, Bindestriche und Punkte und dürfen nicht mit einer Ziffer beginnen. YAML-Schlüssel erlauben praktisch alles. Jedes Zeichen, das der Writer nicht verwenden kann, wird zu einem Unterstrich, und ein mit einer Ziffer beginnender Name bekommt einen vorangestellt — aus "mein schlüssel" wird mein_schl_ssel, aus "2te position" wird _2te_position.

Diese Ersetzung verliert Information und kann kollidieren: Zwei Schlüssel, die sich nur im verbotenen Zeichen unterscheiden, landen am Ende auf demselben Elementnamen. Bindestriche und Punkte laufen unverändert durch, ein Schlüssel wie build-schritt oder werkzeug.version kommt also so an, wie er getippt wurde. Benennt das Zielschema die Elemente vor, ist es der sicherere Weg, die YAML-Schlüssel vor der Umwandlung anzupassen, statt das XML danach zu reparieren.

Was in der XML-Ausgabe fehlt

Es gibt keine XML-Deklaration, die Datei beginnt direkt mit dem ersten Tag. Es gibt kein DOCTYPE, keine Namensraum-Deklaration und keinen Schema-Verweis. Die Ausgabe ist UTF-8 und wohlgeformt, sagt aber selbst nichts darüber, zu welchem Vokabular sie gehört.

Für eine Anbindung ist das meist eine kleine, von Hand zu schließende Lücke: eine Deklarationszeile, ein xmlns-Attribut an der Wurzel, ein Schema-Verweis. Das xmlns-Attribut lässt sich einfach an der Quelle ergänzen, denn es ist nur ein weiterer Schlüssel mit @-Präfix in der obersten Zuordnung der YAML — dann überlebt der Namensraum jede künftige Umwandlung, statt jedes Mal neu ergänzt werden zu müssen.

Leere Werte, Sonderzeichen und mehrzeiliger Text

Ein YAML-Schlüssel ohne Wert wird zu einem leeren Elementpaar. XML unterscheidet das nicht von einem Element mit leerer Zeichenkette — behandelt das empfangende Schema abwesend und leer unterschiedlich, gehört der Schlüssel eher ganz aus der YAML entfernt, statt ihn ohne Inhalt stehen zu lassen.

Kaufmännisches Und, spitze Klammern und doppelte Anführungszeichen in einem Wert werden maskiert, sodass etwa eine URL mit Query-Parametern sicher durchkommt, statt das Dokument zu brechen. Ein mehrzeiliger Blockskalar wird mit seinen Zeilenumbrüchen im Element geschrieben, was gültiges XML ist — ob der empfangende Parser diese Leerzeichen erhält, hängt vom Schema ab, wer darauf angewiesen ist, sollte den Wert selbst in einen CDATA-Abschnitt legen.

Die Prüfung gegen das Schema, meist der eigentliche Grund für diese Seite

XML ist seit 1998 eine W3C-Empfehlung, und der Grund, es statt JSON auszuliefern, ist fast nie die Syntax, sondern das Ökosystem: ein XSD, das ein fehlerhaftes Dokument abweist, bevor es eine Anwendung erreicht, XPath, um einen einzelnen Wert aus einem großen Dokument zu holen, XSLT für die Umformung, XML-Signaturen, wo eine Gegenstelle beweisen muss, dass ein Dokument unverändert ist.

Nichts davon kommt mit der Umwandlung automatisch. Die Ausgabe sofort gegen das Schema zu prüfen, an der ersten Datei, bevor eine ganze Pipeline darauf aufgebaut wird, ist der Schritt, der sich am meisten auszahlt — ein Element, das eigentlich ein Attribut hätte sein sollen, ist in der YAML eine Änderung von zwei Zeichen und nach dem Aufbau einer Pipeline ein langer Nachmittag.

YAML-Dateien, die sich gar nicht umwandeln lassen

Zwei Probleme an der Quelle stoppen die Umwandlung, statt sie nur zu verschlechtern. Eine Datei mit --- Trennzeichen enthält mehrere YAML-Dokumente, eine XML-Datei genau eines — der Parser lehnt ab, statt zu wählen. Aufteilen und jedes Dokument einzeln umwandeln ist der Weg. Ein doppelter Schlüssel in derselben Zuordnung wird ebenfalls zurückgewiesen, mit Zeilennummer — strenger als manches YAML-Tooling, und zu Recht: Ein doppelter Schlüssel bedeutet, dass eine der beiden Einstellungen seit ihrer Einführung ignoriert wurde.

Kommentare stoppen nichts und überleben auch nicht. Beide Formate kennen sie, keiner deiner Kommentare kommt herüber — die XML-Datei trägt die Daten, nicht die Begründung dahinter. Die YAML als Quelle der Wahrheit zu führen, das XML als erzeugtes Artefakt zu behandeln und es nie von Hand zu bearbeiten, ist die Arbeitsweise, für die diese Umwandlung gedacht ist.

YAML in XML umwandeln — so geht es

  1. Leg deine YAML-Datei auf dieser Seite ab, oder klick, um eine auszuwählen.
  2. Wähl XML als Ziel. Die Umwandlung läuft in deinem Browser, die Datei wird nicht hochgeladen.
  3. Lade die fertige XML-Datei herunter.

YAML und XML im Vergleich: was sich ändert

YAML im Vergleich zu XML
YAMLXML
Vollständiger NameYAML Ain't Markup LanguageExtensible Markup Language
Dateiendung.yaml, .yml.xml
Medientypapplication/yamlapplication/xml
Erstmals veröffentlicht20011998
Herausgegeben vonW3C
SpezifikationYAML 1.2XML 1.0
LizenzlageOffener StandardOffener Standard
Heutiger StandAktuellAktuell
Öffnet im BrowserKein BrowserJeder Browser
Stattdessen erwogenJSON, TOMLJSON

Was erhalten bleibt

Es geht nichts verloren. YAML und XML speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Kommentare kommen mit. YAML und XML kennen beide eine Kommentarsyntax, Notizen für die nächste Person gehen also nicht still verloren.

Das Ergebnis öffnen

XML öffnet sich in jedem aktuellen Browser. YAML unterstützen noch weniger Browser. Wenn die Datei auf eine Webseite oder in ein Formular soll, ist das meist der ganze Grund für die Umwandlung.

Visual Studio Code liest sowohl YAML als auch XML — du kannst das Ergebnis also gegen das Original prüfen, ohne ein zweites Programm zu brauchen.

Wofür die beiden Formate gedacht sind

YAML wurde 2001 veröffentlicht. Festgehalten ist das in YAML 1.2 — lohnt sich zu kennen, wenn die Datei das Programm überleben soll, das sie geschrieben hat.

XML kommt von W3C und stammt aus 1998, festgehalten in XML 1.0. Visual Studio Code und oXygen XML Editor lesen das Format.

YAML zu XML: häufige Fragen

Werden meine YAML-Dateien irgendwo hochgeladen?

Nein. Diese Umwandlung läuft vollständig in deinem Browser, die Datei verlässt dein Gerät also nicht. Du kannst das selbst nachprüfen: Öffne den Netzwerk-Tab der Entwicklerwerkzeuge und wandle etwas um. Zu sehen sind die Seite selbst und die Statistik- und Werbeanfragen, mit denen dieser Dienst bezahlt wird — und keine einzige, die deine Datei trägt.

Ist das Umwandeln von YAML in XML kostenlos?

Ja. Kein Konto, kein Wasserzeichen und kein Tageskontingent, das sich verbraucht — es läuft auf deinem eigenen Rechner, du darfst also so oft wiederkommen, wie du willst. Dateien bis 100 MB verarbeitet der Browser, 100 auf einmal.

Geht beim Umwandeln von YAML in XML Qualität verloren?

Nein. XML speichert denselben Inhalt, ohne etwas wegzuwerfen — das Ergebnis ist qualitativ mit dem Original identisch.

Ist YAML zu XML verlustfrei?

Es geht nichts verloren. YAML und XML speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Mehr über diese Formate