XML to YAML

XML naar YAML-formaat converteren

Probeer een voorbeeld

XML-invoer

YAML-uitvoer

Draait lokaal · Veilig om secrets te plakken
YAML verschijnt hier…

Wat is XML naar YAML-conversie?

XML naar YAML-conversie zet gegevens om van Extensible Markup Language (XML) naar YAML Ain't Markup Language (YAML). XML gebruikt tags met puntige haken en attributen om hiërarchische gegevens te beschrijven, terwijl YAML dezelfde structuren weergeeft via inspringing en eenvoudige sleutel-waardeparen in platte tekst. XML naar YAML online converteren is een veelvoorkomende taak bij het migreren van configuratie uit XML-zware systemen zoals Java Spring, Maven of .NET naar platforms die de voorkeur geven aan YAML, zoals Kubernetes, Ansible, GitHub Actions en Docker Compose.

De twee formaten verschillen in hun gegevensmodel. XML behandelt alles standaard als tekst en vertrouwt op schemadefinities (XSD, DTD) voor typehandhaving. YAML heeft native typen: tekenreeksen, gehele getallen, kommagetallen, booleans, nullwaarden, reeksen (arrays) en afbeeldingen (objecten). Tijdens de conversie kunnen waarden zoals "true", "5432" en "3.14" worden geïnterpreteerd als YAML native typen in plaats van als tekenreeksen te blijven. Een zorgvuldige converter plaatst deze waarden tussen aanhalingstekens om de oorspronkelijke tekstrepresentatie uit de XML-bron te bewaren.

XML ondersteunt ook constructies zonder YAML-equivalent: attributen, naamruimten, verwerkingsinstructies, CDATA-secties en opmerkingen. De conversie moet een conventie kiezen voor het weergeven van attributen (doorgaans sleutels met een onderstrepingsteken als voorvoegsel, zoals _attr) en beslissen of de overige constructies worden weggegooid of afgevlakt. Inzicht in deze afwegingen vóór de conversie helpt u de juiste tool te kiezen, deze correct te configureren en te verifiëren dat de YAML-uitvoer overeenkomt met de oorspronkelijke XML-bedoeling.

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

Waarom een online XML naar YAML-converter gebruiken?

Een conversiescript met de hand schrijven betekent omgaan met attribuutmapping, arraydetectie voor herhaalde elementen en rand gevallen bij YAML-typeconversie. Een browsergebaseerde converter verwerkt dit alles in één stap, zodat u de YAML-uitvoer kunt inspecteren en direct in uw configuratiebestanden kunt kopiëren.

Directe conversie
Plak uw XML en ontvang YAML-uitvoer in milliseconden. Geen bibliotheekinstallatie, geen bouwstap, geen script om bij te houden.
🔒
Privacy-eerste verwerking
De conversie wordt volledig uitgevoerd in uw browser met JavaScript. Uw XML-gegevens blijven op uw apparaat en worden nooit naar een server verzonden.
🔀
Verwerkt attributen en arrays
XML-attributen worden omgezet naar sleutels met voorvoegsel. Herhaalde nevenliggende elementen worden automatisch gegroepeerd in YAML-reeksen, waarbij lijststructuren behouden blijven.
📋
Geen account vereist
Open de pagina, plak uw XML en kopieer het YAML-resultaat. Geen aanmelding, geen API-sleutel, geen gebruikslimieten.

Toepassingen van XML naar YAML-conversie

Front-endontwikkeling
Converteer XML-configuratiefragmenten van verouderde bouwtools (Ant, Maven) naar YAML voor moderne CI-pipelines zoals GitHub Actions of GitLab CI die YAML-configuratiebestanden verwachten.
Back-endengineering
Migreer Spring XML bean-definities naar het application.yml-formaat van Spring Boot, of converteer .NET app.config-secties naar YAML voor containerimplementaties.
DevOps en infrastructuur
Transformeer XML-gebaseerde implementatiebeschrijvingen (Tomcat server.xml, IIS web.config) naar YAML-equivalenten voor Kubernetes-manifests, Helm-charts of Ansible-playbooks.
QA en testen
Converteer XML-testfixtures of JUnit-configuratie naar YAML voor testframeworks die YAML-gegevensbronnen ondersteunen, zoals pytest met YAML-fixtures of Robot Framework.
Data-engineering
Transformeer XML-gegevensexports van bedrijfssystemen (SAP, Oracle) naar YAML voor verwerking door ETL-tools zoals dbt of Airflow die YAML-gebaseerde configuratie en schema's gebruiken.
Leren en documentatie
Studenten en technisch schrijvers kunnen XML-voorbeelden in de converter plakken om te zien hoe elementen, attributen en nesting worden omgezet naar YAML-inspringing, reeksen en afbeeldingen.

XML naar YAML-toewijzingsreferentie

XML en YAML hebben verschillende gegevensmodellen. De tabel hieronder toont hoe elke XML-constructie overeenkomt met een YAML-equivalent. Attributen worden doorgaans omgezet naar sleutels met onderstrepingsteken als voorvoegsel, en herhaalde elementen worden YAML-reeksen. Sommige constructies zoals opmerkingen en verwerkingsinstructies hebben geen YAML-representatie en worden tijdens de conversie weggegooid.

XML-constructieXML-voorbeeldYAML-equivalent
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 versus YAML: verschillen in gegevensmodel

Converteren tussen XML en YAML is geen eenvoudige syntaxwissel. De formaten hebben fundamentele structurele verschillen die van invloed zijn op de weergave van gegevens na de conversie.

Typesysteem
XML slaat alle waarden op als tekstreeksen. YAML heeft native booleans, gehele getallen, kommagetallen en nullwaarden. Tijdens de conversie kan een waarde zoals "true" of "3306" worden geherinterpreteerd als een YAML boolean of geheel getal, tenzij de converter deze tussen aanhalingstekens plaatst. Controleer altijd typegevoelige waarden in de uitvoer.
Attributen versus sleutels
XML-elementen kunnen attributen bevatten naast onderliggende elementen en tekstinhoud. YAML heeft alleen sleutel-waardeafbeeldingen. Attributen moeten worden omgezet naar gewone sleutels, doorgaans met een voorvoegsel zoals _ of @ om ze te onderscheiden van onderliggende elementen.
Volgorde en duplicaten
XML bewaart de documentvolgorde en staat nevenliggende elementen met dezelfde tagnaam toe. YAML-afbeeldingen zijn niet geordend volgens de specificatie (hoewel de meeste parsers de invoegvolgorde bewaren), en dubbele sleutels zijn verboden in YAML 1.2. Herhaalde XML-elementen moeten een YAML-reeks worden.

Codevoorbeelden

Hieronder staan werkende voorbeelden voor het converteren van XML naar YAML in JavaScript, Python, Go en op de opdrachtregel. Elk voorbeeld verwerkt geneste elementen, attributen en herhaalde nevenliggende 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
}

Veelgestelde vragen

Is XML naar YAML-conversie verliesvrij?
Niet volledig. XML-attributen, opmerkingen, verwerkingsinstructies en CDATA-secties hebben geen native YAML-equivalent. Attributen kunnen worden bewaard als sleutels met voorvoegsel (_attr of @attr), maar opmerkingen en verwerkingsinstructies worden weggegooid. Als u de conversie naar XML wilt terugdraaien, controleer dan of attributen en naamruimtedeclaraties de conversie hebben overleefd.
Hoe worden XML-attributen weergegeven in YAML?
De meeste converters voegen een onderstrepingsteken (_) of @-symbool als voorvoegsel toe aan attribuutnamen om ze te onderscheiden van sleutels van onderliggende elementen. Zo wordt <server port="8080"> omgezet naar server:\n _port: "8080". Het specifieke voorvoegsel hangt af van de bibliotheek of tool die u gebruikt.
Wat gebeurt er met herhaalde XML-elementen tijdens de conversie?
Wanneer dezelfde elementtag meerdere keren voorkomt onder één bovenliggend element, groepeert de converter ze in een YAML-reeks (lijst). Zo worden twee nevenliggende <item>-elementen omgezet naar item:\n - value1\n - value2. Een enkel <item>-element blijft een scalaire waarde, tenzij de modus voor verplichte arrays is ingeschakeld.
Kan ik YAML terug naar XML converteren?
Ja, maar het resultaat hangt af van hoe de oorspronkelijke conversie attributen en typen heeft verwerkt. Als attributen zijn bewaard met sleutels met voorvoegsel, kan een YAML naar XML-converter ze reconstrueren. ToolDeck heeft ook een YAML naar XML-tool voor de omgekeerde richting. Houd er rekening mee dat YAML native typen (booleans, getallen) tekstreeksen worden in XML.
Waarom plaatst de YAML-uitvoer sommige waarden tussen aanhalingstekens?
YAML heeft native typen: true/false zijn booleans, kale getallen worden gehele getallen of kommagetallen, en yes/no/on/off zijn ook booleans in YAML 1.1. Als uw XML tekst bevat zoals "true" of "3306" die een tekenreeks moet blijven, plaatst de converter deze tussen aanhalingstekens om te voorkomen dat YAML-parsers de waarde herinterpreteren. Dit is correct gedrag, geen fout.
Hoe verwerk ik grote XML-bestanden?
Browsergebaseerde converters werken goed voor bestanden tot een paar megabyte. Voor grotere bestanden (10 MB+) gebruikt u een streaming-aanpak: parseer XML met Python's iterparse of Node.js sax, bouw het tussenliggende object incrementeel op en serialiseer vervolgens naar YAML. Tools zoals yq kunnen XML ook rechtstreeks van de opdrachtregel naar YAML converteren zonder het volledige document in het geheugen te laden.
Wat is het verschil tussen XML naar YAML en XML naar JSON-conversie?
Beide conversies staan voor dezelfde uitdaging van het koppelen van XML-attributen en herhaalde elementen aan een ander gegevensmodel. Het belangrijkste verschil zit in het uitvoerformaat. JSON is strikt (geen opmerkingen, expliciete typen, strikte syntaxis), terwijl YAML een uitbreiding van JSON is die mensgerichte functies toevoegt: opmerkingen, meerregelige tekenreeksen, ankers en aliassen. Kies JSON wanneer de ontvanger een API of JavaScript-runtime is. Kies YAML wanneer de ontvanger een persoon is die configuratiebestanden bewerkt.