ДокументыИзображенияМедиаИнструменты PDF

Конвертер XML в JSON Online

Конвертируйте XML в JSON прямо в браузере. Идеально для миграции SOAP в REST, разбора RSS/Atom-лент или обработки устаревшего XML.

// Invalid XML: DOMParser is not defined
Processed in your browser

XML в JSON: модернизируйте ваш стек данных

Миграция SOAP в REST

Конвертируйте ответы SOAP-веб-сервисов (XML) в JSON для интеграции с современными REST API и JavaScript-клиентами.

RSS- и Atom-ленты

Разбирайте ленты RSS 2.0 и Atom 1.0 в JSON для обработки с помощью JavaScript, хранения в MongoDB или отображения в веб-приложениях.

100% конфиденциально

Ваш XML обрабатывается в браузере с помощью нативного DOMParser. Никогда не покидает ваше устройство.

Устаревший XML

Обрабатывайте ресурсы Android (strings.xml, layouts), sitemap, манифесты SOAP или любой устаревший XML-формат.

Три шага — никаких сложностей

1

Вставьте ваш XML

Вставьте любой валидный XML: ответ SOAP, RSS/Atom-ленту, sitemap.xml, Android-манифест или любой документ XML 1.0.

2

Интеллектуальная конвертация

Атрибуты XML конвертируются с префиксом @, текстовое содержимое — через #text, а повторяющиеся элементы автоматически группируются в массивы.

3

Скачайте или скопируйте JSON

Получите структурированный JSON, готовый к использованию в вашем REST API, NoSQL-базе данных или коде JavaScript/Python.

Остались вопросы?

XML позволяет хранить данные как в дочерних элементах, так и в атрибутах, для которых нет прямого эквивалента в JSON. Наиболее широко принятое соглашение (используемое xml2js в Node.js, xmltodict в Python и JAXB в Java) — добавлять атрибутам префикс @: элемент <user id="42" role="admin"> становится {"user": {"@id": "42", "@role": "admin"}}. Текстовое содержимое смешанных элементов (имеющих и атрибуты, и текст) помещается в ключ #text: <title lang="en">Hello</title> становится {"title": {"@lang": "en", "#text": "Hello"}}. Это соглашение соответствует спецификации BadgerFish и наиболее популярным инструментам экосистемы.

В XML вполне допустимо иметь несколько дочерних элементов с одинаковым именем: <items><item>A</item><item>B</item></items>. JSON не может представить несколько одинаковых ключей в одном объекте (это было бы недопустимым JSON согласно RFC 7159). Стандартное решение — группировать их в массив: {"items": {"item": ["A", "B"]}}. Хороший конвертер автоматически обнаруживает повторяющиеся элементы и конвертирует их в массивы, даже если их только два. Это может вызывать несоответствия, если иногда есть один элемент, а иногда несколько: JSON будет иметь строку в одном случае и массив в другом. Решение — всегда нормализовать до массива для полей, которые могут повторяться.

Пространства имён XML (определены W3C в 'Namespaces in XML 1.0', опубликованы в январе 1999 года и пересмотрены в августе 2006 года) — это возможность XML без эквивалента в JSON. Наиболее распространённое представление — включать префикс пространства имён как часть имени ключа: элемент <soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> становится {"soap:Body": {...}}. Объявления пространств имён (xmlns:prefix="uri") обрабатываются как атрибуты и отображаются как @xmlns:prefix. Для таких случаев использования, как миграция SOAP в REST, где пространства имён повсеместны, часто требуется постобработка для удаления префиксов пространств имён из результирующего JSON.

CDATA (Character Data) — это специальная секция XML, позволяющая включать текст с нормально зарезервированными символами (< > & ' ") без использования XML-сущностей (&lt; &gt; &amp;). Синтаксис: <![CDATA[содержимое здесь]]>. CDATA часто используется для включения HTML, JavaScript, SQL или любого текста со специальными символами внутри XML-элемента. При конвертации в JSON содержимое CDATA обрабатывается как обычный текст: секции CDATA заменяются их содержимым без разметки, и результат помещается как обычная строка в значение поля JSON. Если XML содержит <description><![CDATA[<b>Жирный текст</b>]]></description>, результирующий JSON будет {"description": "<b>Жирный текст</b>"}.

Конвертация происходит в браузере с использованием нативного DOMParser для разбора XML и пользовательского сериализатора JSON. DOMParser может обрабатывать XML-файлы объёмом несколько десятков МБ в современных браузерах (Chrome, Firefox, Edge). Для больших файлов (более 10 МБ) процесс может занять несколько секунд. Для очень больших XML-файлов (более 100 МБ, например, sitemap с сотнями тысяч URL или XML-дампы баз данных) рекомендуется использовать потоковые инструменты, такие как xml2json в Node.js со стримами, xmltodict в Python с режимом iterparse xml.etree или процессор Saxon для корпоративного XML.

Конвертировать XML в JSON: миграция SOAP в REST, RSS-ленты и обработка устаревшего XML

XML (Extensible Markup Language) был определён W3C в рекомендации XML 1.0 (опубликована 10 февраля 1998 года, в настоящее время действует пятое издание от ноября 2008 года). На протяжении 2000-х годов XML был универсальным форматом обмена данными: SOAP (Simple Object Access Protocol, спецификация W3C 2003 года) использовал XML в качестве формата сообщений, RSS 2.0 (выпущен Дейвом Уинером в 2002 году) и Atom 1.0 (RFC 4287, декабрь 2005 года) распространяли новостные ленты в XML, Android (запущен Google в 2008 году) использовал XML для layouts, strings и манифестов приложений, а SVG (Scalable Vector Graphics, W3C 1.1 от 2003 года) является XML. Переход к JSON как основному формату обмена начался с популяризацией AJAX и спецификации JSON Дугласа Крокфорда (RFC 4627, июль 2006 года, заменён RFC 7159 в 2014 году). Сегодня большинство новых API используют JSON/REST, но миллионы унаследованных систем, B2B-сервисов и отраслевых стандартов (UBL, HL7 FHIR в XML, SOAP, KML, GPX) по-прежнему используют XML.

Конвертация XML в JSON нетривиальна, поскольку обе модели данных имеют принципиальные концептуальные различия. XML — это модель дерева узлов (элементы, атрибуты, текст, комментарии, инструкции обработки, CDATA), где элементы могут одновременно иметь как атрибуты, так и дочернее/текстовое содержимое. JSON — это модель дерева значений (объекты, массивы, строки, числа, булевы значения, null) без концепции атрибутов, отдельных от содержимого. Основные соглашения для конвертации: атрибуты XML как ключи с префиксом @ (соглашение BadgerFish/xml2js); текст смешанного элемента в ключ #text; повторяющиеся элементы группируются в массивы; пространства имён сохраняются как префиксы ключей; CDATA обрабатывается как обычный текст. Соглашение BadgerFish, задокументированное на badgerfish.de и принятое наиболее популярными библиотеками, является де-факто стандартом для этой конвертации.

Для высокомасштабного производственного использования наиболее широко применяемыми инструментами являются: xml2js (Node.js, более 25 миллионов загрузок в месяц на npm), xmltodict (Python, основан на стандартной библиотеке xml.etree), JAXB (Java, часть Jakarta EE) и encoding/xml (стандартная библиотека Go). Для миграции устаревших SOAP-сервисов в REST такие инструменты, как Apache Camel, MuleSoft Anypoint и AWS API Gateway с трансформациями полезной нагрузки, предлагают нативную интеграцию XML в JSON на уровне middleware. Для sitemap.xml (протокол Sitemaps, определённый на sitemaps.org и принятый Google в 2005 году) конвертация в JSON позволяет обрабатывать списки URL с помощью JavaScript без XML-парсера. Convertir.ai использует нативный DOMParser браузера (стандартный W3C API, доступный во всех современных браузерах с 2004 года) для разбора XML и пользовательский сериализатор для генерации JSON, гарантируя полную конфиденциальность за счёт отсутствия передачи данных на сервер.