template - ¿Cuándo y por qué XML es preferible a CSV?
xml a xls (20)
a veces parece que se usó XML solo porque estaba de moda.
- Existen analizadores y emisores existentes en todos los idiomas y bases de datos
- Se ocupan de la codificación para mí
- Se ocupan de escaparme
Eso es todo lo que me importa.
Claro, hay una forma semi estándar de escaparse en CSV (es decir, "la forma en que Excel lo hace"), y no es exactamente difícil escribir usted mismo, pero lleva algo de tiempo. Y luego tienes que aceptar implícitamente un carácter que codifica fuera de banda. Pero, como es tan simple, la gente trata de escribirlo e invariablemente arruina el # 2 o el # 3.
JSON también cumple con # 2 y # 3 y se está acercando a satisfacer el # 1. También es posiblemente más simple, al menos para los archivos que no son de documentos. No es de extrañar que me encuentre utilizándolo cada vez más, interna y externamente.
Además de las otras respuestas, XML le permite especificar en qué conjunto de caracteres se encuentra el documento.
Algunas fortalezas:
- Puede validar datos XML contra XSD
- Puede proporcionar fácilmente contratos (como XSD) a otras partes que deberían crear / consumir datos XML, sin describirlos literalmente
- Puede tener de una a varias relaciones en varios niveles en la representación de datos XML
- XML es posiblemente más legible que CSV
- XML es soportado nativamente por el framework .net
Para nombrar algunos de la parte superior de mi cabeza.
CSV es útil cuando solo tiene una serie de valores que se relacionan con cierta información y sabe que siempre almacenará valores para cada campo.
XML tiene el beneficio de tener datos autodescriptivos (etiquetas) y tener jerarquía, lo que le da mucha más flexibilidad en la forma en que almacena los datos.
CSV es más liviano si quieres mover cosas, ya que normalmente es 2 veces más pequeño que XML
XML es estándar y no se verá afectado por la versión de OSV diferente de CSV
Encontré una prueba de rendimiento interesante en la red. Ejemplo de Dios de los inconvenientes de XML cuando las características de XML no son necesarias.
"Probé el experimento de Steven desde un ángulo diferente. Llené una hoja de cálculo de Excel XP con un número de un solo dígito, la guardé en XML y en un archivo de texto delimitado por comas (CSV). Compré ambos con WinZip y luego abrí ambos con Excel. Esto es lo que encontré:
El archivo XML era de 840 MB, el CSV de 34 MB: una diferencia del 2,500% comprimido, el archivo XML era de 2,5 MB y el CSV de 0,00015 MB (150 KB), una diferencia del 1,670%.
Igualmente dramático es el tiempo que tomó descomprimir y representar los archivos como una hoja de cálculo de Excel: llevó unos 20 minutos con el archivo XML; el CSV tomó 1 minuto, una diferencia de 2.000% ".
Estructurados, legibles para el ser humano, más fáciles de editar, validar, analizar, transformabilidad, mecanografía, espacios de nombres, bibliotecas de gran alcance detrás de él, se encuentran entre muchas de las razones.
Por encima de todo, aunque es estándar.
He encontrado que las ventajas más importantes de XML son la funcionalidad de análisis sintáctico y la validación estricta que viene de fábrica con la mayoría de las bibliotecas XML. La insistencia en la buena formación y el mensaje de error fácil de entender (xyz no cerrado en la línea x, columna y) son una ayuda real en comparación con la búsqueda de valores rotos o comportamiento desconocido debido a un error en el archivo CSV.
Los archivos .csv son buenos cuando sus datos son estrictamente tabulares y usted conoce su estructura. Tan pronto como empiece a tener relaciones entre los diferentes niveles de sus datos, xml tiende a funcionar mejor porque las relaciones se pueden hacer obvias (incluso sin esquemas) simplemente anidando.
No tengo la reputación suficiente para comentar la respuesta relevante, pero alguien sugirió comprimir el XML como una forma de ganar paridad de tamaño con los formatos csv. Si bien esto es cierto, la compresión de XML a veces puede volver a morderte. Si está transfiriendo datos XML de punto a punto y falla, es bueno poder leer el XML y descubrir qué salió mal. Si el XML está comprimido y la transferencia falla, a veces no es posible descomprimirlo y examinar los contenidos. En otras palabras, la compresión de XML anula la ventaja de legibilidad humana que tiene.
Por supuesto, está de moda y a veces merece la pena. Todo depende de tu aplicación. Prefiero los archivos de configuración en XML porque son fáciles de analizar. Considerando que utilizo archivos CSV para DataGridView o volcados de bases de datos.
Este Daily WTF: XML vs CSV The Choice is Obvious lo ayudará a tomar su decisión;)
Puede atravesar fácilmente datos XML incluso cuando tiene datos complejos.
Verifique estos enlaces:
Puede tener una jerarquía mucho más compleja, etc. y estructurar con XML vs. CSV. Ofrece mucha más flexibilidad.
También encontré que algunos generadores / analizadores de cvs tienen muchas dificultades con los datos de texto generales. Las cadenas de texto largas con muchos retornos de carro y comas y citas, etc., solo hacen la vida realmente difícil cuando se trata de manipular un cvs.
A SSMS le gusta truncar csv por diversión.
XML es preferible sobre CSV cuando los datos no están estructurados (esquema desconocido) y será leído por un humano.
Podría decirse que, a menos que los datos contengan predominantemente texto, el CSV también está destinado al consumo humano.
También es relevante si sus datos son de 2 o 3 dimensiones. CSV es más adecuado para textos bidimensionales, y debido a su ''verbosidad, XML funciona bien con datos tridimensionales.
Toda la "estandarización" de XML es hipérbole y no debe tomarse literalmente. XML tiene enormes problemas técnicos y muchas de las soluciones no son particularmente elegantes, o en muchos casos útiles:
- Utiliza texto para especificar su propia codificación de texto (¿pollo y huevo?)
- Ninguno de los lenguajes de esquema más comunes para XML funciona particularmente bien.
- La forma antigua y común de crear lenguajes de marcado utilizando
<tags>
no es particularmente útil como estándar. - XML intenta calzar retroactivamente lenguajes de marcado más potentes, como los basados en SGML, en sí mismo, creando un desorden de legado incompatible.
- Aún queda por determinar si las secuencias de escape de texto XML pueden funcionar para cualquier cosa que no sea los casos más simples (es decir, datos amigables).
Para que quede claro, XML es probablemente la opción incorrecta para el 90% del intercambio de datos en el que se está utilizando actualmente, ya que esos usos rompen algunas o todas las suposiciones anteriores.
XML proporciona una forma de etiquetar sus datos con metadatos (proporcionados por los nombres de las etiquetas y de los atributos), mientras que CSV no. Aúne esto con la capacidad de definir jerarquías estructuradas y hace que XML sea más fácil de comprender cuando se proporciona únicamente con los datos, mientras que CSV requeriría una herramienta o documento de acompañamiento para describir cómo se interpreta cada valor.
XML se ha convertido en el predeterminado para sus muchos beneficios que muchas otras personas ya han mencionado. Entonces, la pregunta realmente se convierte en "¿Cuándo y por qué el CSV es preferible a XML?".
Siento que CSV es preferible a XML cuando: - está cargando datos tabulares simples - usted tiene el control tanto de la generación como del consumo del archivo de datos - el conjunto de datos es grande
CSV es perfectamente utilizable si los primeros 2 puntos son verdaderos, y tiene un beneficio de rendimiento que se vuelve más significativo cuanto mayor es el conjunto de datos.
Hice una prueba rápida cargando ~ 8000 registros cada uno con 6 campos de texto. Cargar y analizar el XML tomó ~ 8 segundos. Cargando el CSV tomó menos de 1 segundo.
La sobrecarga de XML vale la pena en muchos casos, pero cuando las estrellas se alinean, CSV tiene más sentido.
Y otra vez más para XML: X en XML significa E xtensible (lo sé, no realmente mnemónico :-P). Esto significa que, con la ayuda del mecanismo de espacio de nombres XML, puede unir dos idiomas XML que desee y combinarlos en el mismo documento. Dado que solo hay un "lenguaje" de CSV (sin contar la miríada de estilos de delimitadores), XML puede manejar una gran cantidad de complejidad, y eso de forma modular.
Sin embargo, esta es la ventaja de CSV: si realmente tiene datos tabulares, la sintaxis XML suele ser exagerada.
Y también lo prefiero porque es mucho más legible.
Yo diría que use XML (y / o JSON) porque algún día usted o alguien (con un mal genio y una gran colección de armas) puede tener que encontrar un error en los datos CSV.
Así que sí, estoy diciendo legibilidad, ¡no te olvides de pensar en el otro tipo! Él puede estar pensando en ti.