XML to YAML

Konvertera XML till YAML-format

Prova ett exempel

XML Inmatning

YAML Utmatning

Körs lokalt · Säkert att klistra in hemligheter
YAML visas här…

Vad är XML till YAML-konvertering?

XML till YAML-konvertering omvandlar data från Extensible Markup Language (XML) till YAML Ain't Markup Language (YAML). XML använder vinkelparentestaggar med attribut för att beskriva hierarkisk data, medan YAML representerar samma strukturer med indragning och klartext-nyckel-värdepar. Att konvertera XML till YAML online är en vanlig uppgift vid migrering av konfiguration från XML-tunga system som Java Spring, Maven eller .NET till plattformar som föredrar YAML, exempelvis Kubernetes, Ansible, GitHub Actions och Docker Compose.

De två formaten skiljer sig i sin datamodell. XML behandlar allt som text som standard och förlitar sig på schemadefinitioner (XSD, DTD) för typvalidering. YAML har inbyggda typer: strängar, heltal, flyttal, booleaner, null-värden, sekvenser (arrayer) och avbildningar (objekt). Under konverteringen kan värden som "true", "5432" och "3.14" tolkas som YAML-inbyggda typer istället för att förbli strängar. En noggrann konverterare citerar dessa värden för att bevara den ursprungliga textrepresentationen från XML-källan.

XML stöder även konstruktioner som saknar YAML-motsvarighet: attribut, namnrymder, bearbetningsinstruktioner, CDATA-avsnitt och kommentarer. Konverteringen måste välja en konvention för att representera attribut (vanligtvis understreck-prefixade nycklar som _attr) och bestämma om resterande konstruktioner ska kasseras eller plattas ut. Att förstå dessa avvägningar innan konvertering hjälper dig att välja rätt verktyg, konfigurera det korrekt och verifiera att YAML-utdata matchar den ursprungliga XML-avsikten.

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

Varför använda en online-konverterare för XML till YAML?

Att skriva ett konverteringsskript för hand innebär att hantera attributmappning, arraydetektering för upprepade element och YAML-typkoercions edge cases. En webbläsarbaserad konverterare hanterar allt detta i ett steg och låter dig inspektera YAML-utdata och kopiera den direkt till dina konfigurationsfiler.

Omedelbar konvertering
Klistra in din XML och få YAML-utdata på millisekunder. Ingen biblioteksinstallation, inget byggsteg, inget skript att underhålla.
🔒
Integritetsfokuserad behandling
Konverteringen körs helt i din webbläsare med JavaScript. Din XML-data stannar på din enhet och skickas aldrig till en server.
🔀
Hanterar attribut och arrayer
XML-attribut mappas till prefixade nycklar. Upprepade syskon­element grupperas automatiskt i YAML-sekvenser, vilket bevarar liststrukturer.
📋
Inget konto krävs
Öppna sidan, klistra in XML, kopiera YAML-resultatet. Ingen registrering, ingen API-nyckel, inga hastighetsbegränsningar eller användningsgränser.

Användningsfall för XML till YAML

Frontendutveckling
Konvertera XML-konfigurationsavsnitt från äldre byggverktyg (Ant, Maven) till YAML för moderna CI-pipelines som GitHub Actions eller GitLab CI som förväntar sig YAML-konfigurationsfiler.
Backendteknik
Migrera Spring XML-boondefinitioner till Spring Boots application.yml-format, eller konvertera .NET app.config-avsnitt till YAML för containerdriftsättningar.
DevOps och infrastruktur
Omvandla XML-baserade driftsättningsbeskrivare (Tomcat server.xml, IIS web.config) till YAML-motsvarigheter för Kubernetes-manifest, Helm-diagram eller Ansible-spelböcker.
QA och testning
Konvertera XML-testfixtures eller JUnit-konfiguration till YAML för testramverk som stödjer YAML-datakällor, till exempel pytest med YAML-fixtures eller Robot Framework.
Datateknik
Omvandla XML-dataexporter från enterprise-system (SAP, Oracle) till YAML för inmatning av ETL-verktyg som dbt eller Airflow som använder YAML-baserad konfiguration och scheman.
Lärande och dokumentation
Studenter och tekniska skribenter kan klistra in XML-exempel för att se hur element, attribut och nästning översätts till YAML-indragning, sekvenser och avbildningar.

XML till YAML-mappningsreferens

XML och YAML har olika datamodeller. Tabellen nedan visar hur varje XML-konstruktion mappas till sin YAML-motsvarighet. Attribut konverteras vanligtvis till understreck-prefixade nycklar och upprepade element blir YAML-sekvenser. Vissa konstruktioner som kommentarer och bearbetningsinstruktioner har ingen YAML-representation och kasseras under konverteringen.

XML-konstruktionXML-exempelYAML-motsvarighet
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: Skillnader i datamodell

Att konvertera mellan XML och YAML är inte ett enkelt syntaxbyte. Formaten har grundläggande strukturella skillnader som påverkar hur data representeras efter konverteringen.

Typsystem
XML lagrar alla värden som textsträngar. YAML har inbyggda booleaner, heltal, flyttal och null-värden. Under konverteringen kan ett värde som "true" eller "3306" omtolkas som en YAML-boolea eller ett heltal om inte konverteraren citerar det. Verifiera alltid typkänsliga värden i utdata.
Attribut vs nycklar
XML-element kan bära attribut tillsammans med underordnade element och textinnehåll. YAML har bara nyckel-värde-avbildningar. Attribut måste konverteras till vanliga nycklar, vanligtvis med ett prefix som _ eller @ för att skilja dem från underordnade element.
Ordning och dubbletter
XML bevarar dokumentordning och tillåter syskon­element med samma taggnamn. YAML-avbildningar är oordnade enligt specifikationen (även om de flesta tolkare bevarar insättningsordningen), och dubblettnycklar är förbjudna i YAML 1.2. Upprepade XML-element måste bli en YAML-sekvens.

Kodexempel

Nedan finns fungerande exempel för att konvertera XML till YAML i JavaScript, Python, Go och på kommandoraden. Varje exempel hanterar nästlade element, attribut och upprepade syskontaggar.

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
}

Vanliga frågor

Är XML till YAML-konvertering förlustfri?
Inte helt. XML-attribut, kommentarer, bearbetningsinstruktioner och CDATA-avsnitt har ingen inbyggd YAML-motsvarighet. Attribut kan bevaras som prefixade nycklar (_attr eller @attr), men kommentarer och bearbetningsinstruktioner kasseras. Om du behöver en fullt reversibel tur-och-retur till XML bör du verifiera att attribut och namnrymdsdeklarationer överlevde konverteringen.
Hur representeras XML-attribut i YAML?
De flesta konverterare prefixar attributnamn med ett understreck (_) eller @-symbol för att skilja dem från underordnade elementnycklar. Till exempel blir <server port="8080"> till server:\n _port: "8080". Det specifika prefixet beror på vilket bibliotek eller verktyg du använder.
Vad händer med upprepade XML-element under konvertering?
När samma elementtagg förekommer flera gånger under en förälder grupperar konverteraren dem i en YAML-sekvens (lista). Till exempel blir två <item>-syskon till item:\n - value1\n - value2. Ett enstaka <item> förblir ett skalärtvärde om inte force-array-läget är aktiverat.
Kan jag konvertera YAML tillbaka till XML?
Ja, men resultatet beror på hur den ursprungliga konverteringen hanterade attribut och typer. Om attribut bevarades med prefixade nycklar kan en YAML till XML-konverterare återskapa dem. ToolDeck har ett YAML till XML-verktyg för omvänd konvertering. Observera att YAML-inbyggda typer (booleaner, tal) blir textsträngar i XML.
Varför citerar YAML-utdata vissa värden?
YAML har inbyggda typer: true/false är booleaner, bara tal blir heltal eller flyttal, och yes/no/on/off är också booleaner i YAML 1.1. Om din XML innehåller text som "true" eller "3306" som ska förbli en sträng citerar konverteraren den för att förhindra att YAML-tolkare omtolkar värdet. Detta är korrekt beteende, inte ett fel.
Hur hanterar jag stora XML-filer?
Webbläsarbaserade konverterare fungerar bra för filer upp till några megabyte. För större filer (10 MB+), använd en strömmande metod: tolka XML med Pythons iterparse eller Node.js sax, bygg det mellanliggande objektet inkrementellt och serialisera sedan till YAML. Verktyg som yq kan också konvertera XML till YAML direkt från kommandoraden utan att läsa in hela dokumentet i minnet.
Vad är skillnaden mellan XML till YAML och XML till JSON-konvertering?
Båda konverteringarna ställs inför samma utmaning att mappa XML-attribut och upprepade element till en annan datamodell. Den huvudsakliga skillnaden ligger i utdataformatet. JSON är strikt (inga kommentarer, explicita typer, strikt syntax), medan YAML är en supermängd av JSON som lägger till människovänliga funktioner: kommentarer, flerradssträngar, ankare och alias. Välj JSON när konsumenten är ett API eller en JavaScript-körmiljö. Välj YAML när konsumenten är en människa som redigerar konfigurationsfiler.