XML es solo una herramienta que viene en muchos sabores y usos. XML sobresale en algunas cosas y apesta en otras. Creo que uno de los problemas es que la gente ha visto XML "empresarial" que es innecesariamente complejo con espacios de nombres y basura esparcidos (¿SOAP, alguien?). El truco para diseñar formatos XML para humanos es agregar un significado real a los datos sin hacerlos abrumadores de leer.
Una de las cosas con las que la gente tiene problemas es que el XML a veces se ahoga en algún carácter o en algún soporte faltante. Sin embargo, hay tanto una ventaja como una desventaja incluso en eso. Lo bueno es que no tienes ambigüedad como la que tienes con HTML, donde diferentes casos de sintaxis semi-inválida se pueden interpretar de manera diferente.
La desventaja es que es un poco más difícil de autor y más difícil de aprender. Estoy de acuerdo en que se debe argumentar que la web no se habría vuelto tan grande tan rápido si HTML fuera tan estricto como XML, pero también argumentaría que nos alegraría si lo hiciera hoy. :)
Además, no lo use para todo solo porque pueda, tenga el sentido y el criterio para aplicarlo adecuadamente. Si todo lo que tiene es XML, tiende a ser siempre una transformación XSLT lejos de lo que desea. :)
Yo diría que el formato solo importa cuando los humanos necesitan interactuar con él. Si está escribiendo un programa que serializa algo y lo envía a un lugar donde será consumido por otro de sus programas, ¿a quién le importa cómo se vea siempre que sea lo más eficiente posible? Use un formato binario o conejitos y unicornios para todo lo que me importa.
Pros de XML
- Cubre muchos casos extremos que YAML y JSON no
- Existen excelentes herramientas para analizar y validar XML en una variedad de plataformas e idiomas diferentes.
- XML se puede transformar fácil y poderosamente en otro formato (a través de cosas como XSLT)
- Los documentos XML razonables son simples para que los humanos los lean y editen; no me digas que JSON es más fácil, no lo es :)
- XML se describe a sí mismo hasta cierto punto, es decir, contiene directamente información sobre su estructura y significado (en contraste con la mayoría de los formatos binarios)
- Maneja la codificación
- Agnóstico de espacios en blanco, lo que facilita el uso multiplataforma
- Se rompe si no está bien formado (garantiza que los datos sean estructuralmente correctos)
- No es SGML
Contras
- Verboso
- No es tan rápido analizar como binario
- Se rompe si no está bien formado (bloquea su aplicación)
Buenos usos
- Archivos de configuración
- Formatos de intercambio de datos
- Formatos de archivo resistentes a la versión
- Almacenar documentos en bases de datos
No tan buenos usos
- Formatos de transferencia de datos
- Serializar objetos
- Almacenar datos relacionales en bases de datos
- Formato de archivo para escenarios de E / S de alto rendimiento