XML - це лише інструмент, який пропонується у багатьох смаках та сферах використання. XML в деяких речах перевершує і смакує в інших. Я думаю, що одна з проблем полягає в тому, що люди бачили «корпоративний» XML, який непотрібний з просторами імен та лайном, розсіяним навколо (SOAP, хтось?). Трюк у розробці XML-форматів для людей - це додавання даних реального значення, не роблячи їх непосильним для читання.
Одне з речей, які люди ставлять під сумнів, - це те, що XML іноді задихається від якогось символу чи якоїсь відсутньої дужки. Однак є і перелом, і недолік навіть у цьому. Перевершення полягає в тому, що у вас немає двозначності, як у вас, з HTML, де різні випадки напівнедійного синтаксису можуть трактуватися по-різному.
Мінусом є те, що автору трохи важче і важче вчитися. Я погоджуюсь, що слід зробити аргумент, що Інтернет не став би таким швидким, якби HTML був таким строгим, як XML, але я також стверджую, що ми були б раді, якби це було сьогодні. :)
Крім того, не використовуйте його для всього лише тому, що можете, маєте розум і розум, щоб застосувати це належним чином. Якщо все, що у вас є, це XML, ви, як правило, завжди перетворюєте XSLT на відстань від того, що вам потрібно. :)
Я б заперечував, що формат дійсно має значення лише тоді, коли люди потребують взаємодії з ним. Якщо ви пишете якусь програму, яка щось серіалізує, і відправляє її кудись, куди її слід споживати іншою з ваших програм, хто піклується про те, як вона виглядає, поки це максимально ефективно? Використовуйте двійковий формат або зайчиків і єдинорогів для всіх, що мені цікавлять.
Плюси XML
- Охоплює безліч кращих справ, яких YAML та JSON не мають
- Є чудові інструменти для розбору та перевірки XML у масиві різних платформ та мов
- XML можна легко і потужно перетворити в інший формат (через такі речі, як XSLT)
- Розумні XML-документи просто люди можуть читати та редагувати; не кажи мені JSON простіше, це не так :)
- XML певною мірою самоописується, тобто безпосередньо містить інформацію про його структуру та значення (на відміну від більшості бінарних форматів)
- Обробляє кодування
- Whitespace agnostic, що полегшує використання крос-платформ
- Порушення, якщо воно не сформоване (Забезпечує структурно правильність даних)
- Це не SGML
Мінуси
- Багатослівний
- Розбирати не так швидко, як двійкові
- Порушує, якщо він не добре сформований (збій програми)
Гарне використання
- Файли конфігурації
- Формати обміну даними
- Версії пружні формати файлів
- Зберігання документів у базах даних
Не настільки хороші вживання
- Формати передачі даних
- Серіалізація об'єктів
- Зберігання реляційних даних у базах даних
- Формат файлу для високопродуктивних сценаріїв вводу / виводу