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 для краулеров или аналитических инструментов.
Как использовать
- Вставьте XML-содержимое в левое поле ввода, либо нажмите кнопку «Загрузить» для выбора .xml/.txt-файла, либо нажмите «Пример» для загрузки встроенного примера bookstore.
- Инструмент автоматически выполнит конвертацию (debounce 500 мс после ввода); справа отобразится преобразованный JSON или YAML с подсветкой синтаксиса CodeMirror для удобства чтения.
- Нажмите кнопки JSON / YAML на правой панели инструментов для переключения формата вывода в реальном времени. Также можно использовать кнопки «Форматировать» (⇧⌘+F) или «Сжать» (⇧⌘+C) для настройки формата вводимого XML.
- Нажмите «Копировать» для копирования JSON/YAML в буфер обмена или «Скачать» для сохранения в файл с соответствующим расширением (output.json / output.yaml / output.xml).
- Для исправления XML-синтаксических ошибок нажмите кнопку «Исправить» рядом с сообщением об ошибке (или в выпадающем меню рядом с «Пример» на панели инструментов) — инструмент вызовет tryFixXML для автоматического добавления XML-декларации и закрытия самозакрывающихся тегов.
- Вставьте 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 написано <, после конвертации в 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
Особенности и сценарии использования двух поддерживаемых форматов вывода:
| Аспект | JSON | YAML | Примечание |
|---|---|---|---|
| Синтаксис | { } : [ ] лаконичный | отступы + - списки | JSON более лаконичен, YAML более читаем |
| Типы данных | нативные number/bool/null | нативные number/bool/null | Оба сохраняют типы |
| Отступы | 2 пробела | 2 пробела | Инструмент единообразно использует 2 пробела |
| Массивы | [1, 2, 3] | - 1 - 2 - 3 | JSON использует квадратные скобки, YAML — дефисы |
| Комментарии | не поддерживается (стандарт) | # комментарий | YAML поддерживает комментарии |
| Читаемость | средняя (шум от скобок) | высокая (ближе к естественному языку) | YAML лучше читается |
| Сценарии | REST API, фронтенд/бэкенд | K8s, Docker, CI/CD | Для веба — JSON, для конфигов — YAML |
Сравнение форматов XML и JSON
Сравнение двух форматов данных по разным аспектам, помогающее выбрать между XML и JSON:
| Аспект | XML | JSON | Примечание |
|---|---|---|---|
| Синтаксис | < > </> многословный | { } : [ ] лаконичный | JSON лаконичнее, XML-теги многословнее, но читаемость выше |
| Типы данных | всё строки | нативные number/bool/null | JSON сохраняет типы, XML требует schema-валидации для типов |
| Массивы | повторяющиеся элементы <i>1</i><i>2</i> | нативные [1,2,3] | JSON-массивы лаконичны, XML-массивы зависят от соглашений |
| Комментарии | <!-- комментарий --> | не поддерживается (стандарт) | XML поддерживает комментарии, стандарт JSON — нет |
| Пространства имён | поддержка xmlns | нет | XML предотвращает конфликты имён в больших документах |
| Schema-валидация | XSD / DTD | JSON Schema | Оба имеют развитые механизмы schema-валидации |
| Производительность парсинга | медленнее (нагрузка от тегов) | быстрее (~3-5x) | JSON парсится проще, XML-парсинг сложнее |
| Сценарии | SOAP, энтерпрайз, Office | REST 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
- JSON Compress
- CSV в JSON
- JSON в CSV
- JSON Diff
- JSON Escape / Unescape
- Сглаживание JSON
- Форматтер JSON
- Генератор JSON
- JSONPath Запрос
- Объединение JSON
- Восстановление JSON
- Валидатор JSON Schema
- Сортировка JSON
- JSON Stringify
- JSON в HTML
- JSON в Java
- JSON в Markdown
- JSON в SQL
- JSON в TOML
- JSON в TypeScript
- XML в JSON
- Преобразовать JSON в XML
- YAML в JSON
- JSON → YAML Конвертер
- JSON в Go
- JSON в Rust
- JSON в Swift
- JSON в C#
- JSON в C++
- JSON в PHP
- JSON в Python