Карьера в IT. Системный аналитик, часть 4, XML и JSON

Всем привет.

Сегодня продолжим наш экскурс в глубины системного анализа. Перед тем, как мы перейдем к интеграциям - логично было бы поговорить об XML\JSON.

XML

XML, в переводе с англ eXtensible Markup Language — расширяемый язык разметки. Используется для хранения и передачи данных. Отличается простотой синтаксиса и универсальностью. XML позволяет описывать документы с помощью тегов, которые можно задавать самостоятельно. Так что увидеть его использование можно и в API в том числе (хотя и намного реже, чем JSON).

XML позволяет:

  • записывать иерархию — «один подчиняется другому»;

  • размечать текст по смыслу от важного к второстепенному;

  • хранить типовые данные — скрипты, настройки программ, названия чего-либо;

  • размечать текст для машинного обучения;

  • хранить результаты работы текстовых редакторов.

У XML-файлов древовидная структура. Это значит, что в них используется набор тегов, внутри которых могут находиться другие теги со своими значениями. Самый верхнеуровневый узел называется корнем, а все, что находится внизу, — листьями.

Теги

В XML каждый элемент должен быть заключен в теги. Тег — это некий текст, обернутый в угловые скобки:

<tag>

Текст внутри угловых скобок — название тега.

Тега всегда два:

  • Открывающий — текст внутри угловых скобок

  • <tag>

  • Закрывающий — тот же текст (это важно!), но добавляется символ «/»

  • </tag>

С помощью тегов мы показываем системе «вот тут начинается элемент, а вот тут заканчивается».

В любом XML-документе есть корневой элемент. Это тег, с которого документ начинается, и которым заканчивается. Он показывает начало и конец нашего запроса, не более того. А вот внутри уже идет тело документа.

Для примера давайте опишем объект Task нашей системы (см. первую практику) в формате XML.

<task type="issue"> (открывающий тег и корневой элемент заодно)

<topic> Не работает принтер</topic>

<priority> high</priority>

<isMass> false </isMass>

<description> Сломался принятер. Выключился ибольше не включается. Нужно срочно распечатать много документов, а не получается. Что делать? Просьба помочь</description>

</task> (закрывающая тег)

Пара особенностей, помимо перечисленных:

  • Все теги являются регистро-чувствительными. Это значит, что если, например, тег <user> закрыт </User>, документ будет оформлен некорректно;

  • Значения атрибутов должны быть заключены в кавычки. Атрибут — характеристика тега. Любые теги могут иметь атрибуты;

  • Вложенность тегов контролируется, поэтому важно следить за порядком открывающих и закрывающих тегов.

JSON

JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Но при этом формат независим от JS и может использоваться в любом языке программирования.

JSON обладает рядом преимуществ. К ним относят:

  • компактность;

  • простое чтение предложений, написанных подобным образом – актуально и для машины, и для человека;

  • легкость преобразования в структуры данных для разнообразных языков программирования;

  • наличие у большинства языков программирования функций и библиотек, которые помогут создавать и читать структуры JSON.

JSON-объект — это неупорядоченное множество пар «ключ:значение», которые разделены ",".

Давайте теперь тот же объект Task опишем в формате JSON и я думаю, что на этом примере сразу станет понятна структура, потому что она намного более простая и наглядная, чем XML

{ (открывающая скобка - начало объекта, закрывающая скобка - конец объекта)

"type" : "issue", (Слева - ключ, справа - значение)

"topic" : "Не работает принтер",

"priority" : "high",

"isMass" : "false",

"description" : "Сломался принятер. Выключился ибольше не включается. Нужно срочно распечатать много документов, а не получается. Что делать? Просьба помочь"

}

JSON на данный момент наиболее распространен и повсеместно используется в REST, например.

P.S.: По традиции - буду признателен за вопросы про карьеру\профессию\чему угодно связанному со сферой IT - постараюсь ответить на всё.

В следующей части расскажу базовую теорию про интеграцию и начнем плавно переходить к REST'у.