Convertire XML in YAML

Qui converti XML in YAML gratis e senza account: trascina il file qui sopra e in un paio di secondi il risultato è pronto da scaricare. La conversione avviene dentro il tuo browser, quindi il file non viene mai caricato. Funziona allo stesso modo su Windows, macOS e Linux e anche su iPhone e Android, e continua a funzionare anche se stacchi la connessione.

  • Dove gira Nel tuo browser. Il file non viene mai caricato.
  • Ricostruito YAML funziona in modo diverso da XML. Non è quindi il degrado graduale di un codec con perdita: quello che YAML sa esprimere viene riprodotto fedelmente, e quello che lì non ha un equivalente non sopravvive affatto.
  • Limite di dimensione Fino a 100 MB per file, gratis e senza account.
  • Vale la pena saperlo Attributi e nodi di testo dell’XML diventano entrambi chiavi, ed è una decisione che il convertitore prende al posto tuo.

Fino a 100 file alla volta. Formati diversi insieme non sono un problema.

Come appare un pom.xml una volta tolti i tag di chiusura

XML spende all’incirca metà dei suoi caratteri per dire dove finisce un elemento. YAML lo dice con l’indentazione, quindi lo stesso documento esce molto più corto e ogni livello di annidamento è un passo visivo invece di una coppia da individuare a colpo d’occhio. Su un pom Maven o un web.config è la differenza fra scorrere e leggere.

La struttura resta invariata. Ogni elemento diventa una chiave, i suoi figli diventano la mappa sottostante e il testo diventa il valore. Niente viene riordinato e niente viene riassunto, quindi ciò che si vede è lo stesso documento con la punteggiatura tolta — esattamente quello che serve quando lo scopo è capire cosa dice il file.

Le chiavi che arrivano fra virgolette, e perché devono esserci

Gli attributi arrivano come chiavi con il prefisso @, e un elemento che porta sia attributi sia testo memorizza quel testo sotto la chiave #text. Entrambe vengono scritte fra virgolette, perché YAML tratta @ come un indicatore riservato all’inizio di uno scalare semplice e # come l’inizio di un commento.

Sembra rumore ed è correttezza. Se modificate il file a mano, tenete quelle virgolette: toglierle produce YAML che non si analizza oppure, nel caso di #text, trasforma silenziosamente il resto della riga in un commento perdendo il valore. Vale lo stesso se riscrivete una chiave rimodellando l’output in un file di valori.

Usare lo YAML per confrontare due versioni di una config

È la ragione più forte per fare questa conversione. Confrontare due XML è penoso perché un cambiamento a un livello di profondità mostra diverse righe di tag, e una riformattazione automatica riscrive l’intero file. Convertire entrambe le versioni e confrontare lo YAML mostra i valori cambiati sulla propria riga con il percorso della chiave visibile sopra.

Un avvertimento fa la differenza fra utile e inutile. Poiché un elemento ripetuto una sola volta diventa una mappa e due volte diventano una lista, una versione che aggiunge una seconda dipendenza cambia la forma di quel ramo e non solo il contenuto, quindi il diff mostra l’intero blocco come riscritto. Non è il convertitore che perde informazione — è la forma che cambia davvero — ma saperlo in anticipo evita di leggere un diff grande come un cambiamento grande.

I prefissi di namespace, e i due punti dentro una chiave

I prefissi sono conservati come parte del nome della chiave, quindi un documento che usa soap: o xsi: produce chiavi con i due punti dentro. Il generatore le scrive senza virgolette, e vengono lette correttamente dallo stesso analizzatore. Le dichiarazioni di namespace stesse sopravvivono come attributi, quindi uno xmlns predefinito arriva come una chiave «@xmlns» fra virgolette sulla radice.

Un due punti dentro una chiave senza virgolette è il genere di cosa da sistemare a mano prima che il file viaggi. Se lo YAML sarà letto da un altro strumento, mettete voi le virgolette a quelle chiavi — non costa nulla e toglie di mezzo una categoria di problema che compare solo nel punto in cui qualcun altro analizza il file. Nulla risolve i prefissi negli URI di namespace corrispondenti, quindi due documenti che usano prefissi diversi per lo stesso namespace producono YAML che non si confronta bene fra loro.

Che cosa resta stringa e cosa diventa numero senza avvisare

I valori che si leggono come numeri vengono interpretati, sia nel testo degli elementi sia negli attributi. Una versione Maven come 4.13.2 resta stringa, perché ha due punti e non può essere un numero, e lo stesso vale per un indirizzo o un percorso. Un attributo di versione scritto 1.0 diventa 1, e un valore con zeri iniziali scritto 007 diventa 7.

Su una config che si legge e non si esegue il danno è limitato all’aspetto del valore, e conta comunque: una versione di schema resa come 1 invece di 1.0 in una revisione è un valore che qualcuno metterà in discussione o, peggio, copierà. Scorrete una volta i valori dall’aspetto numerico nell’output. Se lo YAML va oltre l’occhio umano, mettete voi le virgolette a quelli pensati come identificativi.

Valori lunghi, testo su più righe ed elementi vuoti

Un valore che contiene ritorni a capo viene scritto come uno scalare a blocco — una barra verticale con il testo indentato sotto — che lo mantiene leggibile invece di comprimerlo su una riga sola. Un valore lungo su una sola riga viene scritto così com’è senza andare a capo. Entrambe sono le scelte giuste per un file pensato per essere letto.

Un elemento vuoto o autochiuso diventa una stringa vuota, scritta come una coppia di virgolette. XML non distingue un elemento vuoto da uno che non contiene nulla, quindi non si perde informazione, ma una stringa vuota è visivamente facile da perdere in un file lungo — se state controllando una config alla ricerca di valori non impostati, cercate le virgolette vuote invece di fidarvi dell’occhio.

I commenti che questa conversione distrugge

XML supporta i commenti, YAML supporta i commenti, e nessuno dei vostri sopravvive. L’analizzatore li scarta e nulla li riscrive. Su un payload è irrilevante; su un file di build è la perdita più grande, perché il commento sopra una versione di dipendenza bloccata è di solito l’unica testimonianza rimasta del perché sia bloccata.

L’assetto che evita la trappola è trattare lo YAML come una copia di lettura e tenere l’XML come sorgente. Se lo YAML deve invece diventare la sorgente — una vera migrazione verso Ansible o un chart Helm — pianificate il passaggio che copia i commenti come parte del lavoro, prima che l’XML venga cancellato e con esso il ragionamento.

Rimodellare l’output in qualcosa che uno strumento accetti

Una config convertita non è ancora un file di valori o un insieme di variabili. Porta artefatti XML — le chiavi @, le chiavi #text, una dichiarazione di namespace sulla radice, e magari una chiave ?xml dalla riga di dichiarazione — che non hanno senso per qualunque cosa la stiate alimentando. Eliminarli è il primo passaggio.

Il secondo è la nomenclatura. I nomi degli elementi XML sono spesso prolissi in un modo che aveva senso con uno schema alle spalle, e una config YAML di solito li vuole più corti e piatti. Entrambi i passaggi sono manuali e sono la migrazione vera; la conversione dà solo un punto di partenza leggibile invece di un muro di tag.

Quando convertire e quando lasciare l’XML com’è

Convertite quando l’obiettivo è capire, revisionare o confrontare: lo YAML è più corto, la struttura è evidente e tutto gira nel browser nel tempo che serve a trascinare il file. È una buona abitudine per qualunque config vi venga consegnata e su cui dovete ragionare prima di modificarla.

Non convertite quando il file è validato da uno schema, firmato o consumato da uno strumento che legge XML. In quel caso l’XML è l’oggetto vero, e una copia YAML sarebbe una seconda versione della verità destinata a divergere dalla prima. Leggetelo come YAML, modificatelo come XML.

Come convertire XML in YAML

  1. Trascina il tuo file XML su questa pagina, oppure fai clic per sceglierne uno.
  2. Scegli YAML come destinazione. La conversione avviene nel tuo browser e il file non viene caricato.
  3. Scarica il file YAML finito.

XML o YAML: cosa cambia

XML a confronto con YAML
XMLYAML
Nome completoExtensible Markup LanguageYAML Ain't Markup Language
Estensione del file.xml.yaml, .yml
Tipo di mediaapplication/xmlapplication/yaml
Prima pubblicazione19982001
Pubblicato daW3C
SpecificaXML 1.0YAML 1.2
LicenzaStandard apertoStandard aperto
Situazione attualeAttualeAttuale
Si apre nel browserTutti i browserNessun browser
Valutato al suo postoJSONJSON, TOML

Che cosa resta

I commenti passano. XML e YAML hanno entrambi una sintassi per i commenti, quindi le note lasciate a chi verrà dopo non vengono buttate in silenzio.

Aprire il risultato

Nessun browser legge YAML. È il meno trasportabile dei due: meglio assicurarsi che chi lo riceve lo accetti prima di inviarlo.

Visual Studio Code legge sia XML sia YAML, quindi puoi confrontare il risultato con l'originale senza un secondo programma.

A che cosa serve ciascun formato

XML è il formato di W3C, pubblicato nel 1998. È descritto in XML 1.0, e vale la pena conoscerlo se il file deve sopravvivere allo strumento che lo ha scritto.

YAML risale al 2001, descritto in YAML 1.2. Visual Studio Code e yq lo leggono.

Da XML a YAML: domande frequenti

Il mio file XML viene caricato da qualche parte?

No. Questa conversione avviene interamente nel tuo browser, quindi il file non esce dal tuo dispositivo. Puoi controllarlo da solo: apri la scheda di rete degli strumenti per sviluppatori e converti qualcosa. Vedrai la pagina stessa e le richieste di statistica e di pubblicità con cui questo servizio si paga, e nemmeno una che porti il tuo file.

Convertire XML in YAML è gratis?

Sì. Senza account, senza filigrana e senza una quota giornaliera da consumare: gira sulla tua macchina, quindi puoi tornare quante volte vuoi. Il browser lavora file fino a 100 MB, 100 per volta.

Si perde qualità convertendo XML in YAML?

XML e YAML descrivono il contenuto in modi radicalmente diversi. La conversione è quindi una ricostruzione e non una copia: fedele, ma non identica byte per byte. Attributi e nodi di testo dell’XML diventano entrambi chiavi, ed è una decisione che il convertitore prende al posto tuo.

Un file YAML si apre nel browser?

Nessun browser legge YAML. È il meno trasportabile dei due: meglio assicurarsi che chi lo riceve lo accetti prima di inviarlo.

Altro su questi formati