XML é apenas uma ferramenta que vem em muitos sabores e usos. XML se destaca em algumas coisas e suga em outras. Acho que um dos problemas é que as pessoas viram XML "corporativo" desnecessariamente complexo com espaços para nome e porcaria espalhados (SOAP, alguém?). O truque para projetar formatos XML para humanos é adicionar significado real aos dados sem torná-los impressionantes de ler.
Uma das coisas com as quais as pessoas questionam é que o XML às vezes engasga com algum caractere ou com um colchete ausente. Há, no entanto, tanto uma vantagem quanto uma desvantagem. O lado positivo é que você não tem ambiguidade, como no HTML, onde diferentes casos de sintaxe semi-inválida podem ser interpretados de maneira diferente.
A desvantagem é que é um pouco mais difícil de criar e mais difícil de aprender. Concordo que há um argumento a ser argumentado de que a Web não teria se tornado tão grande se o HTML fosse tão rigoroso quanto o XML, mas eu também argumentaria que ficaríamos felizes se isso acontecesse hoje. :)
Além disso, não o utilize para tudo, apenas porque você pode ter o bom senso e julgamento para aplicá-lo adequadamente. Se tudo o que você tem é XML, você tende a ser sempre uma transformação XSLT longe do que deseja. :)
Eu argumentaria que o formato realmente importa quando os humanos precisam interagir com ele. Se você está escrevendo algum programa que serializa alguma coisa e a envia para algum lugar onde deve ser consumido por outro programa, quem se importa com a aparência, desde que seja o mais eficiente possível? Use um formato binário ou coelhos e unicórnios para todos os cuidados.
Profissionais de XML
- Abrange muitos casos extremos que YAML e JSON não
- Existem excelentes ferramentas para analisar e validar XML em uma variedade de plataformas e linguagens diferentes
- XML pode facilmente e poderosamente ser transformado em outro formato (através de coisas como XSLT)
- Documentos XML razoáveis são simples para humanos lerem e editarem; não me diga que JSON é mais fácil, não é :)
- O XML é auto-descritivo até certo ponto, ou seja, contém diretamente informações sobre sua estrutura e significado (em contraste com a maioria dos formatos binários)
- Lida com codificação
- Espaço em branco independente, o que facilita o uso entre plataformas
- Quebra se não estiver bem formado (garante que os dados estejam estruturalmente corretos)
- Não é SGML
Contras
- Verbose
- Não é tão rápido para analisar como binário
- Quebra se não estiver bem formado (trava seu aplicativo)
Bons usos
- Arquivos de configuração
- Formatos de intercâmbio de dados
- Formatos de arquivo resilientes da versão
- Armazenando documentos em bancos de dados
Usos não tão bons
- Formatos de transferência de dados
- Serializando objetos
- Armazenando dados relacionais em bancos de dados
- Formato de arquivo para cenários de E / S de alto desempenho