Quali sono i vantaggi e gli svantaggi di YAML vs XML per oggetto grafico deserializzazione?

StackOverflow https://stackoverflow.com/questions/561286

  •  05-09-2019
  •  | 
  •  

Domanda

Il caso d'uso è serializzazione lungo termine di oggetti grafici complessi in un formato testuale.

È stato utile?

Soluzione

Risposta breve

se si prevede che gli esseri umani per creare / leggere il documento (file di configurazione, relazioni, ecc), allora si può prendere in considerazione YAML, altrimenti scegliere XML (per la comunicazione machine-to-machine).

Risposta lunga

Lunghezza

Sia XML e YAML sono circa la stessa. Buone librerie XML possono saltare tutti gli spazi bianchi mentre per YAML è necessario. Un complesso YAML contiene un sacco di spazi di indentazione (non usare le schede!)

Errore di rete

Parte di un documento YAML è spesso un documento valido, quindi se un documento YAML è incompleta non v'è alcun modo automatico per rilevarla. Un parser XML sarà sempre controllare se un documento è almeno ben formato, e può controllare la validità rispetto a uno schema automaticamente.

Supporto linguistico

Molte delle più importanti linguaggi di programmazione supportano sia YAML e XML.

Conoscenza generale

Non è necessario spiegare a uno sviluppatore (anche Junior) che cosa è XML. YAML non è ancora ampiamente utilizzato.

Schema

Con XML produttore e del consumatore può essere d'accordo su uno schema di stabilire un formato di scambio dei dati affidabili.

Sintassi

XML è molto ricca:. Namespace, entità, attributi

dipendenze esterne

Java e Python hanno il supporto XML nelle librerie standard. YAML richiede una dipendenza esterna per queste lingue.

Scadenza

specifica XML è più vecchio ed è solida roccia; che, YAML è ancora in costruzione. YAML 1.1 contiene incongruenze (c'è anche un wiki a mantenere la lista di errori).

XSLT

Se avete bisogno di trasformare un documento XML in un altro formato (XML, HTML, YAML, PDF) è possibile utilizzare XSLT mentre per YAML è necessario scrivere un programma.

Altri suggerimenti

Sono d'accordo: YAML è più leggibile, e sembra una buona misura per, diciamo, i file di configurazione scrivibili dev-lettura /. Ma c'è poco vantaggio per la comunicazione machine-to-machine. Inoltre, per la marcatura del testo (forte tradizione di XML, come XHTML, DocBook), XML è meglio.

In particolare per la serializzazione degli oggetti che non riesco a pensare a una buona ragione per usare YAML.

In realtà, vorrei suggerire considerare JSON invece: si basa su un oggetto (o, struct, poiché non c'è un comportamento) modello, piuttosto che gerarchica (XML) o modelli relazionali (SQL). A causa di questo, è po 'più scelta naturale per i dati degli oggetti. Ma XML funziona bene così, e ci sono molti buoni strumenti.

Ultima cosa: i termini "a lungo termine" e "serializzazione degli oggetti" non si mescolano. Quest'ultimo implica accoppiamento stretto: gli oggetti cambiano, così fa la serializzazione. Effettivo oggetto serializzazione non deve essere utilizzato per memorizzare dati, associazione dati / mappatura è più appropriato. Ma può essere che si utilizza la serializzazione in senso di "memorizzazione / ripristino dei dati utilizzando involucri oggetto convenienti"; se è così, va bene.

XML ha XPath e XQuery.

Ma YAML dispone di tasti complesse e consente di copiare un valore in molti luoghi con gli alias (& * sintassi).

Credo che la forza di YAML non è la leggibilità umana, come si suol dire ... posso leggere XML correttamente formattato bene.

In realtà la forza di YAML è umano scrivibilità . Se siete su un iPhone tipizzazione un po 'veloce di dati, come si architetto un modello di dati o tali, YAML è molto più facile da digitare. Gli alias sono impressionanti per questo.

Quindi è possibile convertirlo in qualsiasi altra cosa.

Le funzioni più avanzate di YAML, come la tipizzazione e tag, non ho mai usare quello. I ragazzi YAML stanno attualmente discutendo l'emissione di un "micro YAML" per competere con JSON, per quelli di noi che lo usano praticamente solo come JSON più pulito con gli alias.

Ma XML è meglio come un linguaggio di markup in cui si desidera distinguere visivamente ciò che parte dei dati sono visibili per l'utente finale, come qualcun altro ha sottolineato.

Se si usa YAML, si potrebbe avere un po 'meno byte in corso attraverso il filo. Non abbastanza per essere significativo penso, ma in alcune situazioni potrebbe essere rilevante. Penso anche YAML è più facile da leggere e lavorare con un editor di testo, ma che è davvero tipo di soggettivo, e non sarebbe importa se questo non è un normale scenario di utilizzo.

Se la larghezza di banda non è un fattore e voi non lavorare con la YAML / XML in un editor di testo, spesso, penso che non ha molta importanza quale si utilizza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top