XML в JSON

Бесплатный онлайн-инструмент для конвертации XML в JSON на основе встроенного в браузер DOMParser, который автоматически преобразует XML в стандартные JSON-объекты. XML-атрибуты напрямую мапятся в поля, повторяющиеся элементы автоматически объединяются в массивы, текст элементов сохраняется в поле value; поддерживается вывод в форматах JSON и YAML, prettyPrint-форматирование и автоисправление XML-ошибок. Вся обработка выполняется локально в браузере.

Похожие

О конвертации XML в JSON: автоматическое преобразование XML-данных в стандартные JSON-объекты

XML в JSON — это процесс преобразования данных из формата XML (eXtensible Markup Language), таких как SOAP-сообщения, RSS-подписки, конфигурационные файлы, в объекты JSON (JavaScript Object Notation). XML — это традиционный формат данных корпоративных систем, SOAP Web Service, конфигурационных файлов и документов Office; JSON — это де-факто стандарт современных Web API, JavaScript и NoSQL-баз данных. Оба формата имеют свои преимущества: XML строго самоописываемый, с широкой поддержкой пространств имён и schema-валидации; JSON лаконичный, легко парсится и естественно подходит для JavaScript. В разработке часто требуется преобразовать XML-сообщения в JSON для современных фронтендов или микросервисов — для автоматизации этого процесса и создан данный инструмент.

Ядро инструмента использует встроенный в браузер DOMParser для разбора XML и автоматического обхода DOM-дерева с генерацией JSON-объектов. DOMParser — это встроенный в браузер XML-парсер, соответствующий стандарту W3C DOM, поддерживающий все возможности XML 1.0, включая пространства имён, CDATA, комментарии и атрибуты. Преимущество DOM-парсинга — отсутствие зависимостей, высокая производительность и соответствие стандартам.

Правила маппинга при конвертации очень наглядные: каждый XML-элемент становится JSON-объектом, атрибуты элемента напрямую преобразуются в поля объекта (без префикса @, что позволяет избежать распространённых громоздких соглашений об именовании); текстовое содержимое элементов сохраняется в поле value; повторяющиеся одноимённые элементы автоматически объединяются в массивы. Например, <bookstore><book id="1"><title>Great Gatsby</title></book><book id="2"><title>Brief History</title></book></bookstore> преобразуется в {bookstore: {book: [{id: "1", title: {value: "Great Gatsby"}}, {id: "2", title: {value: "Brief History"}}]}}.

Прямой маппинг атрибутов без префиксов — это ключевое дизайнерское решение данного инструмента. Многие XML-конвертеры используют специальные префиксы вроде @attribute, #text для различения атрибутов и текста, что хотя и точно, но порождает довольно странные JSON-структуры, неудобные для прямого использования в JavaScript. Прямой маппинг атрибутов в данном инструменте делает генерируемый JSON более близким к реальным моделям бизнес-данных, и разработчики могут напрямую определять соответствующие типы в TypeScript interface.

Массивизация повторяющихся элементов — ещё одно ключевое решение при конвертации XML в JSON. В XML нет нативного понятия массива, списки данных представляются повторяющимися элементами (например, несколькими <item>). Инструмент автоматически определяет повторяющиеся одноимённые теги внутри одного родителя и объединяет их в массив, что соответствует семантике списков JSON и предотвращает потерю данных или необходимость ручного объединения.

Двойной формат вывода (JSON + YAML) — отличительная особенность данного инструмента. YAML — это ещё один популярный формат сериализации данных, широко используемый в конфигурационных сценариях Kubernetes, Docker Compose, Ansible, GitHub Actions. Инструмент содержит встроенный простой YAML-конвертер с поддержкой стандартных 2-пробельных отступов, префикса списков - и разделителя пар ключ-значение :. Переключение между форматами одним нажатием кнопки JSON/YAML работает в реальном времени.

Автоисправление XML-ошибок (tryFixXML) повышает отказоустойчивость инструмента. На практике вводимый пользователем XML часто не содержит XML-декларации (<?xml version="1.0"?>) либо использует HTML-стиль самозакрывающихся тегов (<br>, <img>) вместо XML-стиля <br />. Инструмент автоматически добавляет XML-декларацию и закрывает слешем самозакрывающиеся теги, позволяя DOMParser корректно разобрать больше нестандартного XML.

Форматирование и сжатие XML (formatXML/compressXML) основано на библиотеке xml-formatter. Режим prettyPrint выводит читаемый XML с 2-пробельными отступами и переносами строк; режим сжатия выводит компактный однострочный XML без пробелов, подходящий для сетевой передачи. Разработчики могут напрямую сжимать XML с помощью инструмента перед сохранением в базу данных, экономя 30–50% дискового пространства.

Автоконвертация в реальном времени — практичная функция инструмента. После ввода XML срабатывает debounce в 500 мс, автоматически запускающий конвертацию; в сочетании с 6 горячими клавишами (macOS ⇧⌘+F/C/T/O/D/K) пользователи могут быстро выполнять форматирование, сжатие, конвертацию, загрузку, скачивание и очистку без кликов мышью.

Чисто браузерная локальная обработка — ключевая архитектура инструмента. Весь XML-парсинг, обход DOM, сериализация JSON и конвертация YAML выполняются в JavaScript браузера; DOMParser предоставляется браузером нативно (нет необходимости включать XML-парсер в бандл), xml-formatter — это легковесный npm-пакет (менее 30 КБ). Исходные XML-данные не загружаются на сервер, конфиденциальные SOAP-сообщения (содержащие, например, информацию о заказах или пользовательские данные) могут безопасно обрабатываться локально.

Варианты использования

  • Интеграция с платёжными шлюзами, ERP, CRM и другими legacy-корпоративными API, возвращающими только XML-ответы: быстрое преобразование XML-сообщений в JSON для современных фронтендов или Node.js-бэкендов.
  • Парсинг RSS / Atom фидов в JSON для отображения на веб-фронтенде, агрегации в универсальный feed-reader или импорта в базу данных.
  • Чтение XML-конфигураций Java-приложений (Spring, Tomcat, Apache — web.xml, applicationContext.xml) с конвертацией в JSON для запросов через jq или импорта в другие инструменты.
  • Преобразование XML-ответов протокола SOAP 1.1/1.2 в JSON для последующей обработки с помощью Node.js-библиотек вроде jsonwebtoken, lodash и др.
  • Парсинг Maven pom.xml, Ant build.xml и других сборочных скриптов в JSON для визуализации метаданных проекта, анализа зависимостей и т.д.
  • Конвертация RSS-фидов, Sitemap XML, Atom-подписок в JSON для хранения в современных базах данных Elasticsearch, MongoDB и др.
  • При работе с отраслевыми XML-стандартами в медицине и финансах (HL7, ISO 20022) — преобразование XML-сообщений в JSON для обработки современными микросервисами.
  • Преобразование SEO-связанных XML-файлов Google Merchant Center, Sitemap.org (sitemap.xml, robots.xml) в JSON для краулеров или аналитических инструментов.

Как использовать

  1. Вставьте XML-содержимое в левое поле ввода, либо нажмите кнопку «Загрузить» для выбора .xml/.txt-файла, либо нажмите «Пример» для загрузки встроенного примера bookstore.
  2. Инструмент автоматически выполнит конвертацию (debounce 500 мс после ввода); справа отобразится преобразованный JSON или YAML с подсветкой синтаксиса CodeMirror для удобства чтения.
  3. Нажмите кнопки JSON / YAML на правой панели инструментов для переключения формата вывода в реальном времени. Также можно использовать кнопки «Форматировать» (⇧⌘+F) или «Сжать» (⇧⌘+C) для настройки формата вводимого XML.
  4. Нажмите «Копировать» для копирования JSON/YAML в буфер обмена или «Скачать» для сохранения в файл с соответствующим расширением (output.json / output.yaml / output.xml).
  5. Для исправления XML-синтаксических ошибок нажмите кнопку «Исправить» рядом с сообщением об ошибке (или в выпадающем меню рядом с «Пример» на панели инструментов) — инструмент вызовет tryFixXML для автоматического добавления XML-декларации и закрытия самозакрывающихся тегов.
  6. Вставьте JSON в целевой код (например, в определения TypeScript interface, типы API-ответов) или импортируйте в бэкенд-сервис для дальнейшей обработки.

Функции

  • Интеллектуальный разбор DOM-дерева: основанный на встроенном в браузер DOMParser парсинг XML с автоматическим обходом дерева узлов и генерацией стандартных JSON-объектов, zero dependencies.
  • Прямой маппинг атрибутов: XML-атрибуты (например, id="1", category="fiction") напрямую преобразуются в обычные поля JSON-объекта без префикса @.
  • Массивизация повторяющихся элементов: одноимённые повторяющиеся XML-элементы автоматически объединяются в JSON-массивы ({book: [{...}, {...}]}), соответствует общепринятым соглашениям структур данных.
  • Извлечение текстовых узлов: текстовое содержимое элементов автоматически сохраняется в поле value рядом с атрибутами и дочерними элементами.
  • Двойной формат вывода: переключение одним кликом между JSON (prettyPrint с отступом в 2 пробела) и YAML (2-пробельный отступ, префикс списка -), адаптируется к разным сценариям.
  • Автоисправление XML-ошибок: встроенная функция tryFixXML автоматически добавляет отсутствующую XML-декларацию и закрывает слешем самозакрывающиеся теги br/hr/img.
  • Форматирование и сжатие XML: с помощью библиотеки xml-formatter поддерживаются prettyPrint для читаемого вывода и minify для сжатого (2-пробельный отступ или без пробелов).
  • Автоконвертация в реальном времени: debounce в 500 мс после ввода XML запускает автоматическую конвертацию без необходимости кликать, вывод синхронно обновляется.
  • Двойная подсветка синтаксиса JSON/XML: слева CodeMirror с подсветкой XML, справа — переключаемая подсветка JSON или YAML в зависимости от формата.
  • Полная система горячих клавиш: 6 сочетаний клавиш (форматирование/сжатие/конвертация/загрузка/скачивание/очистка), поддержка macOS и Windows/Linux.
  • Копирование и скачивание: копирование в буфер обмена одним кликом или скачивание в виде стандартных файлов output.json/output.yaml/output.xml (расширение выбирается автоматически по текущему формату).
  • Чисто браузерная локальная обработка: весь XML-парсинг, обход DOM, сериализация JSON выполняются в JavaScript браузера, исходные данные не загружаются на сервер, DOMParser предоставляется браузером нативно.

Часто задаваемые вопросы

Как преобразовать XML в JSON?

Вставьте XML-содержимое в левое поле ввода — инструмент использует встроенный в браузер DOMParser для разбора XML и автоматически преобразует DOM-дерево в стандартный JSON-объект. Корневой узел оборачивается как { [tagName]: {...} }, атрибуты мапятся в обычные поля (без префикса @), текст элементов сохраняется в поле value, повторяющиеся одноимённые элементы автоматически объединяются в массивы. Автоконвертация срабатывает через 500 мс после ввода, кликать ничего не нужно.

Как преобразуются XML-атрибуты и текстовые узлы?

Инструмент использует наглядную схему маппинга: XML-атрибуты напрямую преобразуются в обычные поля JSON-объекта (например, <book id="1"> становится {id: "1", ...}), без префикса @; текстовое содержимое элементов сохраняется в поле value (например, <title>Great Gatsby</title> становится {value: "Great Gatsby"}). Если у элемента есть и атрибуты, и текст, они располагаются рядом в одном объекте.

Становятся ли повторяющиеся XML-элементы автоматически JSON-массивом?

Да. Инструмент автоматически определяет несколько повторяющихся тегов внутри одного родителя (например, 3 тега <book> внутри <bookstore>) и объединяет их в JSON-массив. Например, <bookstore><book>...</book><book>...</book></bookstore> преобразуется в {bookstore: {book: [{...}, {...}]}}. Такое соглашение соответствует наиболее распространённым структурам данных при обработке XML.

Как обрабатываются чистые текстовые узлы?

Когда XML-элемент не имеет атрибутов и содержит только текст, инструмент возвращает текстовую строку напрямую (например, <name>Alice</name> становится "Alice"). Когда у элемента есть и атрибуты, и текст, они располагаются рядом в одном объекте ({attr: "...", value: "..."}). Когда у элемента есть дочерние элементы, они становятся полями объекта, а текстовое содержимое объединяется в поле value.

Можно ли конвертировать некорректный XML (например, с незакрытыми тегами)?

Да. Инструмент содержит встроенную функцию tryFixXML, которая автоматически добавляет отсутствующую XML-декларацию (<?xml version="1.0" encoding="UTF-8"?>) и закрывает слешем распространённые самозакрывающиеся теги br, hr, img и др. Это значительно повышает совместимость с устаревшими системами и нестандартными сторонними API.

Какие типы XML-файлов поддерживаются?

Поддерживаются файлы .xml и .txt (кодировка UTF-8). Нажмите кнопку «Загрузить» для выбора локального файла — инструмент читает его через встроенный FileReader API браузера, файл не загружается на сервер. После успешной загрузки содержимое автоматически помещается в поле ввода и запускается конвертация.

Можно ли выводить одновременно JSON и YAML?

Да. Инструмент поддерживает вывод в двух форматах: JSON и YAML. Нажмите переключатель JSON/YAML на правой панели инструментов для переключения формата вывода в реальном времени. JSON выводится с prettyPrint-отступом в 2 пробела; YAML использует стандартные 2-пробельные отступы, префикс списка - и разделитель пар ключ-значение :, подходит для конфигураций Kubernetes, Docker Compose, Ansible и др.

Какое имя у скачиваемого файла?

Расширение выбирается автоматически в зависимости от текущего формата вывода: при выборе JSON скачивается output.json, при выборе YAML — output.yaml, при вводе без конвертации — output.xml (исходный формат сохраняется). Все файлы в кодировке UTF-8 и могут быть прочитаны соответствующими парсерами напрямую.

Какие есть горячие клавиши?

Инструмент поддерживает следующие сочетания клавиш: для macOS — ⇧⌘+F форматировать, ⇧⌘+C сжать (минимизировать), ⇧⌘+T конвертировать, ⇧⌘+O загрузить, ⇧⌘+D скачать, ⇧⌘+K очистить; для Windows/Linux используйте Ctrl вместо ⌘. Всего 6 сочетаний, покрывающих полный рабочий процесс.

Поддерживаются ли XML namespace (пространства имён)?

Инструмент основан на DOMParser для разбора XML и нативно поддерживает XML namespace (xmlns). Префиксы пространств имён сохраняются в JSON как часть имени элемента, например <svg:circle> становится {svg:circle: {...}}. Для доступа к элементам из разных пространств имён необходимо учитывать префикс при парсинге JSON.

Поддерживаются ли CDATA-секции?

Да. Содержимое CDATA-секций (<![CDATA[...]]>) автоматически объединяется DOMParser в textContent элемента, и инструмент извлекает его в поле value JSON так же, как обычные текстовые узлы. Однако поскольку CDATA — это тип XML-узла, а не строка, исходные CDATA и обычный текст неразличимы в JSON-выводе.

Каков максимальный размер входного файла?

Теоретически жёсткого ограничения нет, размер ограничен памятью браузера. XML-файлы размером 1–2 МБ обычно обрабатываются плавно; файлы большего размера могут обрабатываться медленнее из-за высокого потребления памяти DOMParser. Если при обработке больших SOAP-сообщений или RSS-feed возникают задержки, рекомендуется предварительно сократить или разбить XML в локальном редакторе.

Устранение неполадок

Ошибка парсинга JSON «unclosed token»?

Причина обычно в незакрытых XML-тегах, непарных кавычках атрибутов или неэкранированных специальных символах. Нажмите кнопку «Исправить» рядом с сообщением об ошибке для вызова tryFixXML, которая автоматически добавит XML-декларацию и закроет самозакрывающиеся теги. Если парсинг всё равно не удался, вручную проверьте структуру XML или посмотрите результат парсинга через document.documentElement.outerHTML в инструментах разработчика браузера.

Порядок атрибутов в JSON не совпадает с XML?

Стандарт JSON не гарантирует порядок атрибутов; инструмент мапит атрибуты в порядке их следования в исходном коде. Если порядок критичен для бизнес-логики, рекомендуется после парсинга JSON использовать toPairs из Lodash или подобный инструмент для преобразования в упорядоченный массив. Однако подавляющее большинство JavaScript-движков (V8, SpiderMonkey) сохраняют строковые ключи в порядке вставки.

Одноимённый элемент в единственном экземпляре не становится массивом — что делать?

Инструмент в настоящее время преобразует в массив только при обнаружении повторяющихся одноимённых элементов; если элемент один, он сохраняется как отдельный объект. Если нужно принудительно сделать массив (даже при одном элементе), можно после конвертации обернуть его через castArray из lodash: [result].flat() или принудительно валидировать через JSON Schema как массив.

Как сохранить специальные символы в XML-атрибутах (<, &)?

DOMParser автоматически разэкранирует значения атрибутов, и инструмент сохраняет разэкранированное содержимое. Если в исходном XML написано &lt;, после конвертации в JSON значение будет <. Это стандартное поведение XML, соответствующее ожиданиям пользователей. Если нужно сохранить исходную экранированную форму, используйте библиотеку xml-formatter или собственный XML-tokenizer вместо DOMParser.

Почему в YAML-выводе нет информации о типах?

Формат YAML сам по себе поддерживает типы (например, 12 — это number, true — boolean, null — null), но встроенный в инструмент простой YAML-конвертер сериализует все значения как строки. Если нужно сохранять типы, используйте полноценную YAML-библиотеку вроде js-yaml или выполните приведение типов после парсинга через JSON Schema-валидацию.

Как обрабатывать ввод с XML processing instructions (PI)?

DOMParser по умолчанию сохраняет XML-инструкции обработки (например, <?xml-stylesheet ...?>) как узлы ProcessingInstruction в document.firstChild. Данный инструмент в настоящее время обходит только Element-узлы, инструкции обработки игнорируются. Если нужно их сохранить, вручную извлеките document.firstChild.nodeValue перед использованием.

Чем открыть скачанный .json-файл?

Скачанный файл output.json — это стандартный JSON-файл в кодировке UTF-8, который можно открыть любым текстовым редактором (VS Code, Sublime, Notepad++) или специализированными JSON-инструментами (jq, JSDoc). Можно также перетащить файл в браузер для просмотра отформатированной структуры. Практически все языки программирования — JavaScript, Python, Node.js, Java, Go и др. — имеют встроенные JSON-парсеры.

Глоссарий

XML (eXtensible Markup Language)
Расширяемый язык разметки, утверждённый W3C в 1998 году. Использует угловые скобки и теги для описания структуры и содержимого данных, поддерживает пространства имён, Schema-валидацию и XSLT-преобразования. Является стандартным форматом для SOAP Web Service, Office Open XML, RSS, Atom и др.
JSON (JavaScript Object Notation)
Легковесный формат обмена данными, основанный на объектной нотации JavaScript, но независимый от языка программирования. Поддерживает шесть базовых типов: объекты ({}), массивы ([]), строки, числа, булевы значения и null. Является де-факто стандартом современных Web API, NoSQL-баз данных и экосистемы JavaScript.
DOMParser
Встроенный в браузер API (стандарт W3C DOM), который парсит XML- или HTML-строки в DOM-дерево. Поддерживается всеми современными браузерами (Chrome, Firefox, Safari, Edge) из коробки, без необходимости подключения сторонних библиотек. На основе DOM-дерева можно удобно обходить, запрашивать и модифицировать XML-содержимое.
xml-formatter
Легковесная JavaScript-библиотека (менее 30 КБ) для форматирования (prettyPrint) и сжатия (minify) XML-документов. Поддерживает настраиваемые отступы, символы переноса строки, параметр collapseContent и др. Данный инструмент использует её для функций форматирования и сжатия XML.
Маппинг атрибутов (attribute mapping)
Способ отображения атрибутов XML-элементов в поля JSON-объекта. Данный инструмент использует прямой маппинг: <book id="1"> преобразуется в {id: "1"}, без префикса @. Генерирует более чистые JSON-структуры, упрощает определение типов в TypeScript interface.
Массивизация повторяющихся элементов
Автоматическое объединение одноимённых повторяющихся XML-элементов (например, нескольких <item>) в JSON-массив. Это ключевое дизайнерское решение при конвертации XML в JSON, соответствующее семантике списков JSON и предотвращающее потерю данных.
Поле value
Соглашение данного инструмента об именовании поля для текстового содержимого XML-элементов. Элемент <title>Great Gatsby</title> преобразуется в {value: "Great Gatsby"}. Если у элемента одновременно есть атрибуты и текст, атрибуты и value располагаются рядом в одном объекте.
YAML (YAML Ain't Markup Language)
Человекочитаемый формат сериализации данных, широко используемый в конфигурационных файлах Kubernetes, Docker Compose, Ansible, GitHub Actions. Данный инструмент поддерживает простой YAML-вывод с 2-пробельными отступами, префиксом списка - и разделителем пар ключ-значение :.
SOAP (Simple Object Access Protocol)
Основанный на XML протокол взаимодействия веб-сервисов. SOAP-сообщение оборачивается в SOAP envelope (XML namespace), внутри которого находятся header и body (XML payload). Данный инструмент может парсить SOAP-сообщения в JSON для использования в современных JavaScript-сервисах.
RSS / Atom feed
Основанные на XML форматы контентных подписок. Формат RSS 2.0 организует контент структурой <rss><channel><item>, Atom использует структуру <feed><entry>. Данный инструмент преобразует RSS/Atom в JSON-массивы для удобного отображения на фронтенде или агрегации в базу данных.
XML namespace (пространство имён)
Механизм предотвращения конфликтов имён элементов через атрибут xmlns в формате xmlns:prefix="uri". DOMParser нативно поддерживает пространства имён; префиксы пространств имён сохраняются в JSON как часть имени элемента.
CDATA-секция
Специальный синтаксис XML <![CDATA[...]]>, позволяющий встраивать текст со специальными символами (<, >, &) внутри элементов без экранирования. DOMParser объединяет содержимое CDATA в textContent элемента, инструмент обрабатывает его как обычный текст.
tryFixXML
Встроенная в инструмент функция исправления XML, автоматически добавляющая отсутствующую XML-декларацию (<?xml version="1.0" encoding="UTF-8"?>) и закрывающая слешем распространённые самозакрывающиеся теги br, hr, img. Предназначена для обработки «грязных данных» из устаревших систем или нестандартных сторонних API.
prettyPrint
Режим вывода библиотеки xml-formatter. При включении генерируемый XML автоматически дополняется отступами и переносами строк (например, 2-пробельный отступ), обеспечивая высокую читаемость; при выключении выводится компактный XML без пробелов (minify).

Правила маппинга XML-элементов в JSON-поля

Правила маппинга при конвертации на основе разбора DOMParser:

Структура XMLПример XMLВывод JSONПравило маппинга
element with attrs<book id="1" category="fiction"/>{"id": "1", "category": "fiction"}Атрибуты напрямую мапятся в поля объекта (без префикса @)
element with text<title>Great Gatsby</title>{"value": "Great Gatsby"}Текстовое содержимое элемента сохраняется в поле value
attrs + text<price currency="USD">12.99</price>{"currency": "USD", "value": "12.99"}Атрибуты и текст располагаются рядом в одном объекте
no attrs, no text<book id="1"/>{"id": "1"}Только атрибуты, поля value нет
nested elements<book><title>Gatsby</title></book>{"title": {"value": "Gatsby"}}Дочерние элементы становятся полями объекта
repeated elements<books><book/><book/></books>{"book": [{}, {}]}Повторяющиеся одноимённые элементы автоматически объединяются в массив
root element<bookstore>...</bookstore>{"bookstore": {...}}Корневой узел оборачивается как { [tagName]: ... }
namespace prefix<svg:circle/>{"svg:circle": {...}}DOMParser нативно поддерживает пространства имён

Сравнение форматов вывода JSON и YAML

Особенности и сценарии использования двух поддерживаемых форматов вывода:

АспектJSONYAMLПримечание
Синтаксис{ } : [ ] лаконичныйотступы + - спискиJSON более лаконичен, YAML более читаем
Типы данныхнативные number/bool/nullнативные number/bool/nullОба сохраняют типы
Отступы2 пробела2 пробелаИнструмент единообразно использует 2 пробела
Массивы[1, 2, 3]- 1 - 2 - 3JSON использует квадратные скобки, YAML — дефисы
Комментариине поддерживается (стандарт)# комментарийYAML поддерживает комментарии
Читаемостьсредняя (шум от скобок)высокая (ближе к естественному языку)YAML лучше читается
СценарииREST API, фронтенд/бэкендK8s, Docker, CI/CDДля веба — JSON, для конфигов — YAML

Сравнение форматов XML и JSON

Сравнение двух форматов данных по разным аспектам, помогающее выбрать между XML и JSON:

АспектXMLJSONПримечание
Синтаксис< > </> многословный{ } : [ ] лаконичныйJSON лаконичнее, XML-теги многословнее, но читаемость выше
Типы данныхвсё строкинативные number/bool/nullJSON сохраняет типы, XML требует schema-валидации для типов
Массивыповторяющиеся элементы <i>1</i><i>2</i>нативные [1,2,3]JSON-массивы лаконичны, XML-массивы зависят от соглашений
Комментарии<!-- комментарий -->не поддерживается (стандарт)XML поддерживает комментарии, стандарт JSON — нет
Пространства имёнподдержка xmlnsнетXML предотвращает конфликты имён в больших документах
Schema-валидацияXSD / DTDJSON SchemaОба имеют развитые механизмы schema-валидации
Производительность парсингамедленнее (нагрузка от тегов)быстрее (~3-5x)JSON парсится проще, XML-парсинг сложнее
СценарииSOAP, энтерпрайз, OfficeREST API, фронтенд/бэкендСовременный веб использует JSON, традиционный энтерпрайз — XML

Privacy & Security

Данный инструмент конвертации XML в JSON выполняет все операции полностью локально в вашем браузере: XML-парсинг (на основе встроенного DOMParser), обход DOM-дерева, сериализация JSON, конвертация YAML — всё выполняется на клиентской стороне через JavaScript браузера; xml-formatter — единственная внешняя зависимость (npm-пакет размером менее 30 КБ). Исходные XML-данные не загружаются на какие-либо серверы. Загрузка файлов использует встроенный FileReader API браузера для чтения напрямую в память, без промежуточных сервисов. Не используются Cookie для отслеживания, не собираются никакие пользовательские вводы или данные об использовании. После закрытия или обновления страницы все введённые и выведенные данные автоматически удаляются из памяти. Подходит для обработки XML-сообщений, содержащих конфиденциальные бизнес-данные (информация о заказах, учётные данные пользователей, ответы корпоративных API).

Authoritative References