XML в JSON
Преобразовать XML-документы в чистый, предсказуемый JSON
Что такое конвертер XML в JSON?
XML был стандартом данных 2000-х и остаётся в RSS-лентах, банковских API, SOAP-сервисах и старых конфигурационных файлах. Современные JavaScript, Python и Go читают JSON куда естественнее. Конвертер XML в JSON переводит документ в простые объекты по предсказуемой схеме: каждый элемент становится объектом, атрибуты получают префикс "@@", чтобы атрибут "id" никогда не сталкивался с дочерним элементом "id", текстовое содержимое живёт под "@text", а повторяющиеся соседние элементы сворачиваются в массивы.
Возможности
- Разбирает вложенные элементы в JSON-объекты
- Отделяет атрибуты (префикс @@) от текста (@text) и дочерних элементов
- Группирует повторяющиеся соседние элементы в массивы автоматически
- Обрабатывает CDATA, комментарии, объявления и самозакрывающиеся теги
- Сообщает о несоответствующих или незакрытых тегах с ясной ошибкой
- Форматирует JSON с читаемыми отступами
Когда использовать
- Читать RSS/Atom-ленты или SOAP-подобные ответы
- Мигрировать XML-конфигурацию в JSON-пайплайны
- Проверить, что на самом деле возвращает старый XML API
- Строить тестовые JSON-фикстуры из XML-данных
Конфиденциальность: разбор полностью происходит в вашем браузере — вставленное никогда не загружается.
Сопоставление, используемое этим конвертером
- Атрибуты XML превращаются в ключи с префиксом
@(price currency="EUR"→{"@currency":"EUR"}), чтобы они никогда не конфликтовали с дочерними элементами. - Элемент, содержащий одновременно текст и дочерние элементы, хранит свой текст под ключом
#text; элемент, содержащий только текст, отображается как простая строка. - Повторяющиеся соседние элементы объединяются в массивы; декларация XML, комментарии и инструкции обработки игнорируются.
Атрибуты и текстовые узлы требуют единообразного подхода
Атрибуты и текст не смешиваются
Атрибуты становятся ключами с префиксом "@@id", а текст живёт под "@text", поэтому атрибут и элемент с одним именем никогда не перезаписывают друг друга.
Списки остаются списками
Повторяющиеся соседние элементы автоматически сворачиваются в массив JSON — каталог из пяти книг становится массивом из пяти объектов, а не одной перезаписанной книгой.
Терпим к реальному XML
CDATA, комментарии, DOCTYPE и самозакрывающиеся теги разбираются чисто, а действительно некорректный XML завершается описательным сообщением.
Частые вопросы
Как представляются атрибуты?⌄
Атрибуты становятся ключами с префиксом "@@", например <book id="5"> превращается в {"@@id":"5"}. Это исключает классическую коллизию между атрибутом "id" и дочерним элементом с тем же именем.
Что происходит с повторяющимися элементами?⌄
Повторяющиеся соседние элементы с одинаковым именем группируются в массив JSON автоматически. Одиночное вхождение остаётся одним объектом, несколько — становятся массивом: оба случая читаются интуитивно.
Загружается ли мой XML куда-либо?⌄
Нет. Всё работает в вашем браузере на чистом JavaScript — ничего не передаётся и не сохраняется.
Куда пропал мой атрибут в JSON-выводе?⌄
Ищите ключ, начинающийся с символа @, в том же объекте, что и его элемент. Если вы видите только #text, это означает, что у элемента были атрибуты И содержимое; если вы ожидали атрибут, но не находите его, он находится в родительском узле — раскройте дерево на один уровень выше.