> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/web/kakie-otlichiya-mezhdu-xml-i-json.md).

# Какие отличия между XML и JSON?

XML и JSON — это форматы передачи данных, которые часто используются для обмена информацией между клиентом и сервером. Основные отличия:

***

### 1️⃣ **Синтаксис и структура**

| Характеристика | XML                                    | JSON                                                           |
| -------------- | -------------------------------------- | -------------------------------------------------------------- |
| Формат         | Текстовый, основан на тегах `<tag>`    | Текстовый, основан на парах ключ-значение `{ "key": "value" }` |
| Читаемость     | Читаемый, но более громоздкий          | Более компактный и читаемый                                    |
| Структура      | Дерево тегов, может содержать атрибуты | Объекты и массивы, проще для парсинга                          |

***

### 2️⃣ **Типизация данных**

* **XML:** все данные — текст, типы нужно определять вручную или через схемы (XSD).
* **JSON:** поддерживает строки, числа, массивы, объекты, булевы значения — типы данных встроены.

***

### 3️⃣ **Поддержка в языках программирования**

* **XML:** сложнее парсить, требует библиотеки (`xml.etree` в Python, DOM/SAX в Java).
* **JSON:** поддержка «из коробки» во всех современных языках (`JSON.parse()` в JS, `json` в Python).

***

### 4️⃣ **Применение**

* **XML:** старые SOAP API, конфигурационные файлы, обмен данными между корпоративными системами.
* **JSON:** современные REST API, веб-приложения, микросервисы.

***

### 5️⃣ **Размер и производительность**

* **XML:** более объёмный из-за тегов, парсинг медленнее.
* **JSON:** компактный, быстрее передача и обработка.

***

### 6️⃣ **Дополнительно**

* **XML** поддерживает схемы (XSD), пространства имён (namespaces) и комментарии.
* **JSON** легче для чтения человеком, проще сериализовать/десериализовать, не поддерживает атрибуты, только ключ-значение.
