Читая StackOverflow и слушая подкасты Джоэла Спольски и Джеффа Этвуда, я начинаю полагать, что многие разработчики ненавидят использование XML или, по крайней мере, стараются избегать использования XML в максимально возможной степени для хранения или обмена данными.
С другой стороны, мне очень нравится использовать XML по нескольким причинам:
- Сериализация XML реализована на большинстве современных языков и чрезвычайно проста в использовании,
- Будучи медленнее двоичной сериализации, сериализация XML очень полезна, когда дело доходит до использования одних и тех же данных из нескольких языков программирования или когда они предназначены для чтения и понимания человеком (даже для отладки) (JSON , например, понять сложнее),
- XML поддерживает unicode, и при правильном использовании не возникает проблем с другой кодировкой, символами и т. Д.
- Существует множество инструментов, упрощающих работу с XML-данными. XSLT - это пример, упрощающий представление и преобразование данных. XPath - еще один, упрощающий поиск данных,
- XML может храниться на некоторых серверах SQL, что позволяет создавать сценарии, когда данные, которые слишком сложны, чтобы их легко хранить в таблицах SQL, должны быть сохранены и обработаны; Например, с помощью SQL нельзя напрямую манипулировать данными JSON или двоичными данными (кроме манипулирования строками, что в большинстве ситуаций является безумием),
- XML не требует установки каких-либо приложений. Если я хочу, чтобы мое приложение использовало базу данных, я должен сначала установить сервер базы данных. Если я хочу, чтобы мое приложение использовало XML, мне не нужно ничего устанавливать,
- XML является гораздо более явным и расширяемым, чем, например, реестр Windows или файлы INI,
- В большинстве случаев нет проблем с CR-LF благодаря уровню абстракции, обеспечиваемому XML.
Итак, принимая во внимание все преимущества использования XML, почему так много разработчиков ненавидят его? ИМХО, проблема только в том, что:
- XML слишком подробный и требует гораздо больше места, чем большинство других форм данных, особенно когда речь идет о кодировке Base64.
Конечно, есть много сценариев, в которых XML вообще не подходит. Сохранять вопросы и ответы SO в XML-файле на стороне сервера будет совершенно неправильно. Или, когда вы храните видео в формате AVI или кучу изображений в формате JPG, худший вариант использовать XML.
А как насчет других сценариев? Каковы слабые стороны XML?
Людям, которые считали, что это не настоящий вопрос:
Вопреки таким вопросам, как незамкнутый Значительные новые изобретения в вычислительной технике с 1980 года, мой вопрос является очень ясным вопросом и ясно предлагает объяснить, какие слабые места испытывают другие люди при использовании XML и почему им это не нравится. Он не приглашает к обсуждению, например, хорошего или плохого XML. Это также не требует расширенных обсуждений; Таким образом, полученные на данный момент ответы краткие и точные и содержат достаточно информации, которую я хотел.
Но это вики, поскольку на этот вопрос не может быть единственного хорошего ответа.
Согласно SO, «не настоящий вопрос» - это вопрос, на который «трудно сказать, что здесь задают. Этот вопрос неоднозначный, расплывчатый, неполный или риторический, и на него нельзя разумно ответить в его нынешней форме».
- О чем здесь спрашивают: я думаю, что сам вопрос очень ясен, и несколько абзацев текста выше делают его еще яснее,
- Этот вопрос неоднозначный, расплывчатый, неполный: опять же, здесь нет ничего двусмысленного, расплывчатого или неполного,
- или риторический: это не так: ответ на мой вопрос не является очевидным,
- и на них нельзя разумно ответить: несколько человек уже дали отличные ответы на вопрос, показывая, что на вопрос можно ответить разумно.
Также кажется вполне очевидным, как оценивать ответы и определять принятый ответ. Если в ответе будут указаны веские причины того, что не так с XML, есть вероятность, что за этот ответ проголосуют, а затем примут.