ToolDeck

YAML a XML

Converte YAML in formato XML

Prova un esempio

Input YAML

Output XML

Esegue in locale · Sicuro per incollare segreti
L'XML apparirà qui…
Prova anche:YAML in JSON

Cos'è la conversione da YAML a XML?

La conversione da YAML a XML trasforma dati scritti in YAML (YAML Ain't Markup Language) in XML (Extensible Markup Language). YAML usa l'indentazione e una punteggiatura minima per rappresentare dati strutturati, mentre XML usa tag di apertura e chiusura con una gerarchia esplicita. Convertire tra i due formati è un'operazione routinaria quando i sistemi che consumano XML devono ricevere dati originariamente scritti in YAML.

YAML è stato progettato per la leggibilità umana. I file di configurazione di strumenti come Kubernetes, Ansible, Docker Compose e GitHub Actions sono scritti in YAML perché è compatto e facile da modificare a mano. XML, definito dalla specifica W3C XML 1.0, è stato il formato di scambio dati predefinito in sistemi enterprise, servizi web SOAP e flussi di lavoro incentrati sui documenti per decenni. Quando una configurazione scritta in YAML deve alimentare una pipeline basata su XML, la conversione è necessaria.

La mappatura tra YAML e XML non è uno a uno. YAML supporta tipi di dati come booleani, interi, float e null in modo nativo, mentre XML tratta tutto il contenuto come testo a meno che uno schema (XSD o DTD) non definisca i tipi esternamente. Le sequenze YAML (liste) non hanno un equivalente XML diretto e devono essere rappresentate come elementi ripetuti. Conoscere queste differenze aiuta a prevedere l'output ed evitare sorprese.

Perché usare questo convertitore YAML a XML?

Riscrivere manualmente YAML in XML è tedioso e soggetto a errori, specialmente per strutture profondamente annidate. Questo convertitore gestisce la traduzione strutturale all'istante.

Conversione istantanea
Incolla il YAML e ottieni l'output XML formattato immediatamente. Nessuno script da scrivere né strumento da installare per conversioni occasionali.
🔒
Elaborazione privacy-first
Tutta la conversione viene eseguita nel browser. I tuoi dati YAML, che spesso contengono indirizzi server, credenziali e dettagli dell'infrastruttura, non lasciano mai il tuo dispositivo.
📋
Nessun account richiesto
Usa il convertitore senza registrarti, effettuare il login o fornire un'email. Apri la pagina e inizia a convertire.
🌐
Gestisce strutture annidate
Supporta mapping YAML profondamente annidati, sequenze, tipi misti e stringhe multiriga. L'output preserva la gerarchia con una corretta indentazione XML.

Casi d'uso della conversione YAML a XML

Sviluppo frontend
Converti dati mock YAML in formato XML per testare parser XML, trasformazioni XSLT o componenti che si aspettano risposte XML dalle API.
Integrazione backend
Trasforma la configurazione YAML in XML quando si integra con servizi Java legacy che usano Spring XML config, file Maven POM o endpoint SOAP.
DevOps e CI/CD
Converti manifest Kubernetes o Ansible YAML in XML per strumenti che richiedono input XML, come le configurazioni delle pipeline Jenkins o certi sistemi di monitoraggio.
QA e testing
Genera fixture XML di test a partire da definizioni YAML. YAML è più facile da mantenere come dati di test, e convertirlo in XML al momento del test mantiene le fixture leggibili.
Ingegneria dei dati
Converti configurazioni ETL in formato YAML o definizioni di schema in XML per pipeline che consumano XML. Comune in ambito sanitario (HL7), finanziario (FpML) e nei sistemi di dati governativi.
Apprendimento e prototipazione
Studenti e principianti possono incollare YAML e vedere la struttura XML equivalente affiancata, il che aiuta a sviluppare l'intuizione su come i dati gerarchici si mappano tra i formati.

Riferimento alla mappatura dei tipi YAML in XML

I tipi di dati YAML non si mappano direttamente in XML. Questa tabella mostra come ogni costrutto YAML si traduce nel proprio equivalente XML. Comprendere queste regole aiuta a prevedere l'output e risolvere risultati inattesi.

Tipo YAMLEsempio YAMLOutput XML
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: differenze tra formati

YAML e XML risolvono lo stesso problema — la rappresentazione di dati strutturati — con compromessi diversi. Nessuno dei due è universalmente migliore; la scelta giusta dipende da chi o cosa consuma i dati.

YAML
Delimitato da spazi bianchi, senza tag di chiusura. Supporta tipi nativi (bool, int, float, null). Commenti con #. Compatto per la configurazione e la modifica manuale. Elaborato da librerie come PyYAML, js-yaml e gopkg.in/yaml.
XML
Basato su tag con coppie esplicite di apertura/chiusura. Tutti i valori sono testo per default; i tipi richiedono uno schema (XSD). Supporta attributi, namespace, contenuto misto e istruzioni di elaborazione. Elaborato dalla libreria standard di ogni linguaggio principale.
CaratteristicaYAMLXML
SintassiBasata sull'indentazioneBasata su tag (&lt;tag&gt;...&lt;/tag&gt;)
Tipi di datiNativi (string, int, bool, null, float)Solo testo (lo schema aggiunge i tipi)
Commenti# commenti inline<!-- commenti a blocco -->
AttributiNessun supporto nativoSì (&lt;tag attr="val"&gt;)
NamespaceNon supportatiSì (xmlns:prefix)
Dimensione filePiù piccola (nessun tag di chiusura)Più grande (tag verbosi)

Esempi di codice

Come convertire YAML in XML a livello programmatico in diversi linguaggi e ambienti:

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>

Domande frequenti

Le sequenze YAML possono essere rappresentate in XML?
Sì, ma XML non ha un tipo lista nativo. Le sequenze YAML vengono tipicamente convertite in elementi XML ripetuti con lo stesso nome di tag. Ad esempio, una lista YAML sotto la chiave "items" diventa più elementi figlio &lt;item&gt;. Alcuni convertitori li racchiudono in un elemento padre &lt;items&gt; per maggiore chiarezza.
Cosa succede ai commenti YAML durante la conversione?
I commenti YAML (righe che iniziano con #) vengono scartati durante la conversione. La maggior parte dei parser YAML elimina i commenti quando costruisce la struttura dati, quindi non sono disponibili per l'output XML. Se hai bisogno di preservare i commenti, dovresti usare un parser YAML che li mantiene, come ruamel.yaml in Python.
Come vengono gestiti gli anchor e gli alias YAML?
Gli anchor YAML (&name) e gli alias (*name) vengono risolti prima della conversione. Il parser espande gli alias nei loro valori completi, quindi l'XML risultante contiene i dati completi senza alcun riferimento ad anchor. Ciò significa che l'output XML può essere più grande dell'input YAML se gli anchor erano stati usati per evitare ripetizioni.
La conversione è reversibile (da XML a YAML)?
Parzialmente. Puoi convertire XML in YAML, ma il risultato potrebbe non corrispondere esattamente al YAML originale. Gli attributi XML non hanno un equivalente YAML e vengono tipicamente rappresentati come chiavi speciali (es. @attributo). Anche le informazioni sul tipo vanno perse poiché XML tratta tutto come testo, quindi numeri e booleani nel YAML originale diventano stringhe dopo un round-trip.
Come gestisco gli attributi XML quando converto da YAML?
YAML non ha un concetto nativo di attributi. Una convenzione comune è di usare il prefisso @ alle chiavi per indicare che devono diventare attributi XML anziché elementi figlio. Ad esempio, "@id: 42" sotto un mapping produrrebbe &lt;element id="42"&gt;. Questa convenzione è usata da librerie come xml-js e xmltodict.
Qual è la dimensione massima del file YAML che questo strumento può gestire?
Il convertitore viene eseguito nel browser, quindi il limite dipende dalla memoria disponibile del tuo dispositivo. File fino a qualche megabyte vengono convertiti senza problemi su hardware moderno. Per file molto grandi (50 MB+), usa uno strumento da riga di comando come yq o uno script Python con PyYAML e lxml, che gestiscono lo streaming e la memoria in modo più efficiente.
Perché il mio YAML produce un output XML non valido?
La causa più comune sono chiavi YAML che non sono nomi di elementi XML validi. I nomi degli elementi XML non possono iniziare con un numero, contenere spazi o usare la maggior parte dei caratteri speciali. Chiavi come "2nd-item" o "my key" produrranno XML non valido. Rinomina le chiavi problematiche o usa un convertitore che sanifica i nomi automaticamente (es. sostituendo gli spazi con underscore e anteponendo un underscore ai nomi che iniziano con un numero).