serialize ejemplo deserialize java xml serialization yaml

ejemplo - xml to object java



¿Cuáles son las ventajas y desventajas de yaml vs xml para Object graphic de/serialization? (4)

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


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 lo mismo. Buenas bibliotecas XML pueden omitir todos los espacios en blanco, mientras que para YAML es obligatorio. Un YAML complejo contiene muchos espacios de indentación (¡no use pestañas!)

Falla de red

Parte de un documento YAML a menudo es un documento válido, por lo que si un documento YAML está incompleto, no hay una forma automática de detectarlo. Un analizador XML siempre verificará si un documento está bien formado y puede verificar la validez de un esquema de forma automática.

Ayuda de idioma

Muchos lenguajes de programación importantes son compatibles con YAML y XML.

Conocimientos generales

No necesita explicarle a un desarrollador (incluso junior) qué es XML. YAML no es muy utilizado todavía.

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 idiomas.

Madurez

La especificación XML es más antigua y es sólida como una roca; mientras que, YAML todavía 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.


Estoy de acuerdo: YAML es más legible y parece una buena opción para, por ejemplo, los archivos de configuración dev-read / writeable. Pero hay poco beneficio para la comunicación de máquina a máquina. Además, para el marcado textual (forte tradicional de xml, como xhtml, docbook), xml es mejor.

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

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

Lo último: los términos "a largo plazo" y "serialización de objetos" no se mezclan. Último implica un acoplamiento cercano: sus objetos cambian, también lo hace la serialización. La serialización de objetos reales no se debe usar 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 convenientes envoltorios de objetos"; si es así, está bien.


Si usa YAML, es posible que tenga un poco menos bytes en el cable. No es suficiente para ser significativo, creo, pero en algunas situaciones podría ser relevante. También creo que YAML es más fácil de leer y trabajar en un editor de texto, pero eso es realmente subjetivo, y realmente no importaría si este no fuera un escenario de uso normal.

Si el ancho de banda no es un factor y no trabajará con YAML / XML en un editor de texto a menudo, creo que realmente no importa cuál use.


XML tiene xpath y xquery.

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

Creo que la fortaleza de YAML no es la legibilidad humana, como dicen ... Puedo leer XML correctamente formateado sin problemas.

En realidad, la fortaleza de YAML es la escritura humana. Si está en un iPhone escribiendo un poco de datos mientras diseña un modelo de datos o algo así, YAML es mucho más fácil de escribir. Los alias son geniales para eso.

Entonces puedes convertirlo a lo que sea.

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

Pero XML es mejor como lenguaje de marcado donde se desea distinguir visualmente qué partes de los datos son visibles para el usuario final, como señaló otra persona.