YAML to XML

Konvertera YAML till XML-format

Prova ett exempel

YAML Inmatning

XML Utmatning

Körs lokalt · Säkert att klistra in hemligheter
XML visas här…
Prova också:YAML to JSON

Vad är YAML till XML-konvertering?

YAML till XML-konvertering omvandlar data skriven i YAML (YAML Ain't Markup Language) till XML (Extensible Markup Language). YAML använder indragning och minimal interpunktion för att representera strukturerad data, medan XML använder öppnings- och stängningstaggar med en explicit hierarki. Att konvertera mellan de två formaten är en rutinuppgift när system som konsumerar XML behöver ta emot data som ursprungligen skapades i YAML.

YAML designades för mänsklig läsbarhet. Konfigurationsfiler för verktyg som Kubernetes, Ansible, Docker Compose och GitHub Actions skrivs i YAML eftersom formatet är kompakt och enkelt att redigera för hand. XML, definierat av W3C XML 1.0-specifikationen, har i decennier varit standardformatet för datautbyte i enterprise-system, SOAP-webbtjänster och dokumentcentrerade arbetsflöden. När en YAML-baserad konfiguration måste matas in i en XML-baserad pipeline krävs konvertering.

Mappningen mellan YAML och XML är inte en-till-en. YAML stöder datatyper som booleaner, heltal, flyttal och null-värden inbyggt, medan XML behandlar allt innehåll som text om inte ett schema (XSD eller DTD) definierar typer externt. YAML-sekvenser (listor) har ingen direkt XML-motsvarighet och måste representeras som upprepade element. Att känna till dessa skillnader hjälper dig förutsäga utdata och undvika oväntade resultat.

Varför använda den här YAML till XML-konverteraren?

Att manuellt skriva om YAML som XML är tidskrävande och felkänsligt, särskilt för djupt kapslade strukturer. Den här konverteraren hanterar den strukturella översättningen direkt.

Omedelbar konvertering
Klistra in YAML och få formaterad XML-utdata direkt. Inget behov av att skriva ett skript eller installera ett CLI-verktyg för engångskonverteringar.
🔒
Integritetsfokuserad behandling
All konvertering körs i din webbläsare. Din YAML-data, som ofta innehåller serveradresser, autentiseringsuppgifter och infrastrukturdetaljer, lämnar aldrig din enhet.
📋
Inget konto krävs
Använd konverteraren utan att registrera dig, logga in eller ange en e-postadress. Öppna sidan och börja konvertera direkt.
🌐
Hanterar kapslade strukturer
Stöder djupt kapslade YAML-avbildningar, sekvenser, blandade typer och flerradssträngar. Utdata bevarar hierarkin med korrekt XML-indragning.

Användningsfall för YAML till XML

Frontendutveckling
Konvertera YAML-mockdata till XML-format för att testa XML-tolkare, XSLT-transformationer eller komponenter som förväntar sig XML-svar från API:er.
Backendintegration
Omvandla YAML-konfiguration till XML vid integration med äldre Java-tjänster som använder Spring XML-konfiguration, Maven POM-filer eller SOAP-endpoints.
DevOps och CI/CD
Konvertera Kubernetes- eller Ansible-YAML-manifest till XML för verktyg som kräver XML-inmatning, exempelvis Jenkins pipeline-konfigurationer eller vissa övervakningssystem.
QA och testning
Generera XML-testfixtures från YAML-definitioner. YAML är enklare att underhålla som testdata, och konvertering till XML vid testtillfället gör fixtures mer lättlästa.
Datateknik
Konvertera YAML-formaterade ETL-konfigurationer eller schemadefinitioner till XML för pipelines som konsumerar XML. Vanligt inom sjukvård (HL7), finans (FpML) och statliga datasystem.
Lärande och prototypframtagning
Studenter och nybörjare kan klistra in YAML och se den motsvarande XML-strukturen sida vid sida, vilket ger intuitiv förståelse för hur hierarkisk data mappas mellan formaten.

Typmappningsreferens: YAML till XML

YAML-datatyper mappas inte direkt till XML. Tabellen nedan visar hur varje YAML-konstruktion översätts till sin XML-motsvarighet. Att förstå dessa regler hjälper dig förutsäga utdata och felsöka oväntade resultat.

YAML-typYAML-exempelXML-utdata
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: Formatskillnader

YAML och XML löser samma problem — strukturerad datarepresentation — men med olika avvägningar. Inget är universellt bättre; det rätta valet beror på vem eller vad som konsumerar datan.

YAML
Blankstegsbegränsat, inga stängningstaggar. Stöder inbyggda typer (bool, int, float, null). Kommentarer med #. Kompakt för konfiguration och mänsklig redigering. Tolkas av bibliotek som PyYAML, js-yaml och gopkg.in/yaml.
XML
Taggbaserat med explicita öppnings- och stängningspar. Alla värden är text som standard; typer kräver ett schema (XSD). Stöder attribut, namnrymder, blandat innehåll och bearbetningsinstruktioner. Tolkas av standardbiblioteket i alla större programmeringsspråk.
EgenskapYAMLXML
SyntaxIndragningsbaseradTaggbaserad (&lt;tagg&gt;...&lt;/tagg&gt;)
DatatyperInbyggda (sträng, int, bool, null, float)Endast text (schema lägger till typer)
Kommentarer# inline-kommentarer<!-- blockkommentarer -->
AttributInget inbyggt stödJa (&lt;tagg attr="värde"&gt;)
NamnrymderStöds inteJa (xmlns:prefix)
FilstorlekMindre (inga stängningstaggar)Större (utförliga taggar)

Kodexempel

Hur man konverterar YAML till XML programmatiskt i olika språk och miljöer:

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>

Vanliga frågor

Kan YAML-sekvenser representeras i XML?
Ja, men XML har ingen inbyggd listtyp. YAML-sekvenser konverteras vanligtvis till upprepade XML-element med samma taggnamn. En YAML-lista under nyckeln "items" blir exempelvis flera &lt;item&gt;-underordnade element. Vissa konverterare omsluter dem i ett överordnat &lt;items&gt;-element för tydlighetens skull.
Vad händer med YAML-kommentarer under konverteringen?
YAML-kommentarer (rader som börjar med #) kasseras under konverteringen. De flesta YAML-tolkare tar bort kommentarer när de bygger datastrukturen, så de är inte tillgängliga för XML-utdata. Om du behöver bevara kommentarer krävs en YAML-tolk som behåller dem, exempelvis ruamel.yaml i Python.
Hur hanteras YAML-ankare och alias?
YAML-ankare (&namn) och alias (*namn) löses upp före konverteringen. Tolkaren expanderar alias till sina fullständiga värden, så den resulterande XML-koden innehåller all data utan ankarreferenser. Det innebär att XML-utdata kan vara större än YAML-indata om ankare användes för att undvika upprepning.
Är konverteringen reversibel (XML tillbaka till YAML)?
Delvis. Du kan konvertera XML till YAML, men resultatet kanske inte stämmer exakt överens med den ursprungliga YAML-filen. XML-attribut har ingen YAML-motsvarighet och representeras vanligtvis som specialnycklar (t.ex. @attribut). Typinformation förloras också eftersom XML behandlar allt som text, så tal och booleaner i den ursprungliga YAML-filen blir strängar efter en tur-och-retur.
Hur hanterar jag XML-attribut vid konvertering från YAML?
YAML har inget inbyggt attributbegrepp. En vanlig konvention är att prefixera nycklar med @ för att indikera att de ska bli XML-attribut istället för underordnade element. Till exempel skulle "@id: 42" under en avbildning ge &lt;element id="42"&gt;. Den här konventionen används av bibliotek som xml-js och xmltodict.
Hur stor YAML-fil kan det här verktyget hantera?
Konverteraren körs i din webbläsare, så gränsen beror på din enhets tillgängliga minne. Filer upp till några megabyte konverteras utan problem på modern hårdvara. För mycket stora filer (50 MB+) bör du använda ett kommandoradsverktyg som yq eller ett Python-skript med PyYAML och lxml, som hanterar strömning och minne mer effektivt.
Varför genererar min YAML ogiltig XML-utdata?
Den vanligaste orsaken är YAML-nycklar som inte är giltiga XML-elementnamn. XML-elementnamn får inte börja med en siffra, innehålla blanksteg eller använda de flesta specialtecken. Nycklar som "2nd-item" eller "min nyckel" ger ogiltig XML. Döp om de felaktiga nycklarna eller använd en konverterare som sanerar namn automatiskt (t.ex. ersätter blanksteg med understreck och lägger till ett understreck före sifferinledda namn).