Stop Comparing JSON and XML

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

JSON или XML? Какой из них лучше? Какой из них быстрее? Какой должен я использовать в моем следующем проекте? Прекратите! Эти вещи несравнимы. Это похоже на сравнение велосипеда и AMG S65. Правда, какой из них лучше? Оба могут доставить вас из дома в офис, верно? В некоторых случаях велосипед может быть лучше. Но это означает, что их можно сравнивать друг с другом? То же самое относится и к JSON и XML. Они очень разные вещи с собственными областями применения.

Вот как может выглядеть простой кусок данных в формате JSON (140 символов):

Подобный документ в XML будет выглядеть так (167 символов):

Кажется, легко сравнить, верно? Первый пример немного короче, его легче понять, потому что он менее “шифрованный” и также полностью разбирается в JavaScript. Вот и все, давайте используем JSON и закроем вопрос о смерти XML! Кому вообще нужен этот громоздкий 15-летний XML?

Ну, мне он нужен, и я его люблю. Позвольте мне объяснить почему.

И не поймите меня неправильно; я не против JSON. Совсем нет. Это хороший формат данных. Но это всего лишь формат данных. Мы используем его временно, чтобы передать кусочек данных из точки А в точку В. Действительно, он короче, чем XML, и его проще читать. Вот и все.

XML - это не формат данных; это язык. Очень мощный язык. Позвольте мне показать вам, на что он способен. Позвольте мне в основном объяснить, почему я его люблю. И я настоятельно рекомендую вам прочитать XML in a Nutshell, Third Edition Эллиотта Расти Харольда и У. Скотта Минса.

Я считаю, что XML имеет четыре особенности, которые серьезно отличают его от JSON или любого другого простого формата данных, например, YAML, например.

  • Атрибуты и пространства имен. Вы можете добавлять метаданные к вашим данным, так же, как это сделано выше с атрибутом id. Данные остаются внутри элементов, например, имя автора книги, в то время как метаданные (данные о данных) могут и должны быть помещены в атрибуты. Это значительно помогает в организации и структурировании информации. Кроме того, как элементы, так и атрибуты могут быть помечены как принадлежащие определенным пространствам имен. Это очень полезная техника в случаях, когда несколько приложений работают с одним и тем же XML-документом.

  • XML Schema. Когда вы создаете XML-документ в одном месте, изменяете его несколько раз в другом месте и затем переносите его в еще одно место, вы хотите убедиться, что его структура не нарушена ни одним из этих действий. Одно из них может использовать <year> для хранения даты публикации, в то время как другое использует <date> согласно ISO-8601. Чтобы избежать этой путаницы в структуре, создайте дополнительный документ, который называется XML Schema и отправьте его вместе с основным документом. Каждый, кто хочет работать с основным документом, сначала проверяет его правильность с использованием предоставленной схемы. Это своего рода интеграционное тестирование в производстве. RelaxNG - это похожий, но более простой механизм; попробуйте его, если XML Schema кажется вам слишком сложной.

  • XSL. Вы можете вносить изменения в свой XML-документ без использования какого-либо кода на Java/Ruby и т. д. Просто создайте документ XSL-преобразования и “примените” его к вашему исходному XML. В результате вы получите новый XML. Язык XSL (кстати, он является чисто функциональным) разработан для манипуляций с иерархическими данными. Он намного более подходит для этой задачи, чем Java или любой другой объектно-ориентированный/процедурный подход. Вы можете преобразовать XML-документ во что угодно, включая простой текст и HTML. Некоторые жалуются на сложность XSL, но пожалуйста, попробуйте. Вам не понадобится все, а его основные функциональные возможности довольно просты в использовании.

Это не полный список, но эти четыре функции действительно много значат для меня. Они делают мой документ «самодостаточным». Он может проверять себя (XML Schema), знает, как изменять себя (XSL), и предоставляет мне очень удобный доступ ко всему, что находится внутри него (XPath).

Существует еще много языков, стандартов и приложений, разработанных вокруг XML, включая XForms, SVG, MathML, RDF, OWL, WSDL и т.д. Но вы меньше всего вероятно будете использовать их в основных проектах, так как они более «узкоспециализированные».

JSON не был разработан с такими функциями, хотя некоторые из них сейчас пытаются найти свое место в мире JSON, включая JSONPath для запросов, некоторые инструменты для преобразований и json-schema для проверки. Но они всего лишь слабые пародии по сравнению с тем, что предлагает XML, и я не думаю, что у них есть будущее. Или скажем так: я бы хотел, чтобы они рано или поздно исчезли. Они просто превращают хороший, простой формат в нечто неуклюжее.

Таким образом, чтобы заключить, JSON - это простой формат данных без дополнительных функций. Его лучшее применение - AJAX. Во всех остальных случаях я настоятельно рекомендую использовать XML.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 04:55

sixnines availability badge   GitHub stars