¿Cuáles son las ventajas y desventajas de yaml frente a xml para la desserialización/deseriaización de gráficos de objetos?

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

  •  05-09-2019
  •  | 
  •  

Pregunta

El caso de uso es la serialización a largo plazo de gráficos de objetos complejos en formato textual.

¿Fue útil?

Solución

Respuesta corta

Si espera que los humanos creen/lean el documento (archivos de configuración, informes, etc.), entonces puede considerar YAML; de lo contrario, elija XML (para comunicación de máquina a máquina).

Respuesta larga

Longitud

Tanto XML como YAML son aproximadamente iguales.Las buenas bibliotecas XML pueden omitir todos los espacios en blanco, mientras que para YAML es necesario.Un YAML complejo contiene muchos espacios de sangría (¡no uses tabulaciones!)

Falla de red

Parte de un documento YAML suele ser un documento válido, por lo que si un documento YAML está incompleto no existe una forma automática de detectarlo.Un analizador XML siempre comprobará si un documento está al menos bien formado y puede comprobar la validez con respecto a un esquema automáticamente.

Ayuda de idioma

Muchos lenguajes de programación importantes soportan ambos YAML y XML.

Conocimientos generales

No es necesario explicarle a un desarrollador (incluso junior) qué es XML.YAML aún no se usa mucho.

Esquema

Con XML tanto el productor como el consumidor pueden acordar un esquema para establecer un formato de intercambio de datos confiable.

Sintaxis

XML es muy rico:espacios de nombres, entidades, atributos.

Dependencias externas

Java y Python tienen soporte XML en las bibliotecas estándar.YAML requiere una dependencia externa para estos lenguajes.

Madurez

La especificación XML es más antigua y sólida como una roca;mientras que YAML aún está en construcción.YAML 1.1 contiene inconsistencias (incluso hay una wiki para mantener la lista de errores).

XSLT

Si necesita transformar un documento XML a otro formato (XML, HTML, YAML, PDF), puede usar XSLT, mientras que para YAML debe escribir un programa.

Otros consejos

Estoy de acuerdo: YAML es más fácil de leer, y parece como un buen ajuste para, por ejemplo, archivos de configuración de escritura-lectura dev /. Pero hay poco beneficio para la comunicación de máquina a máquina. Además, para el marcado de texto (punto fuerte tradicional de XML, como XHTML, DocBook), xml es mejor.

Específicamente para la serialización de objetos que no puedo pensar en una buena razón para usar YAML.

De hecho, sugeriría considerar JSON lugar: se basa en el objeto (o, estructura, ya que no hay ningún comportamiento) modelo, en lugar de jerárquica (XML) o modelos relacionales (SQL). Debido a esto, es conveniente poco más natural para los datos del objeto. Pero XML funciona muy bien también, y hay muchas buenas herramientas.

La última cosa: los términos "a largo plazo" y "serialización de objetos" no se mezclan. Esto último implica el acoplamiento de cierre: cambian sus objetos, lo mismo ocurre con la serialización. Actual serialización de objetos no debe ser utilizado para almacenar datos, el enlace de datos / mapeo es más apropiado. Pero puede ser que esté utilizando la serialización en el sentido de "almacenar / restaurar datos utilizando envoltorios de objetos convenientes"; Si es así, está bien.

XML tiene XPath y XQuery.

Pero YAML tiene teclas complejas y le permite copiar un valor en muchos lugares con los alias (& * sintaxis).

Creo que la fuerza de YAML no es legible por seres humanos, como dicen ... Puedo leer XML con formato correcto muy bien.

En realidad la fuerza de YAML es humano capacidad de escritura . Si se encuentra en una tipificación iPhone un poco rápida de datos a medida que el arquitecto o un modelo de datos tales, YAML es mucho más fácil de escribir. Los alias son impresionantes para eso.

A continuación, puede convertirlo en lo que sea.

Las características más avanzadas de YAML como tipos estricta y las etiquetas, nunca usar eso. Los chicos YAML están discutiendo actualmente la emisión de un "micro YAML" para competir con JSON, para aquellos de nosotros que lo utilizan básicamente como JSON más limpio con alias.

Pero es mejor XML como un lenguaje de marcas en el que desea distinguir visualmente qué partes de los datos son visibles para el usuario final, como lo indicó otra persona.

Si utiliza YAML, usted podría tener un poco menos bytes que van a través del cable. No lo suficiente para ser significativo que pienso, pero en algunas situaciones podría ser relevante. También pienso YAML es más fácil de leer y trabajar con un editor de texto, pero que es realmente algo subjetivo, y no sería realmente si esto no es un escenario de uso normal.

Si el ancho de banda no es un factor y usted no estará trabajando con el YAML / XML en un editor de texto a menudo, creo que en realidad no importa que se utiliza.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top