XML ⇄ JSON-конвертер

Двусторонняя конвертация XML ↔ JSON с обработкой атрибутов, сохранением CDATA, BOM, окончанием строк и отступами

Ввод

Дополнительные настройки

Вывод

XML ⇄ JSON-конвертер

Двусторонняя конвертация XML ↔ JSON с обработкой атрибутов, сохранением CDATA, BOM, окончанием строк и отступами

Возможности

  • Режим автоопределения определяет, является ли вставленный текст XML или JSON, и запускает конвертацию в обратном направлении — вставляйте любую сторону без ручной смены режима
  • Две стратегии атрибутов: режим «Префикс» выдаёт атрибуты XML с настраиваемым префиксом (по умолчанию `@`) как соседние ключи JSON; режим «Объект» собирает их в отдельный объект `$`, так что текст элемента и атрибуты никогда не сталкиваются
  • Обработка CDATA и текстовых узлов: при включённом «Считать CDATA/Текст как #text» текстовое содержимое элемента сворачивается в свойство `#text`; смешанное содержимое выживает после round-trip; выключено сохраняет структурное различие
  • Переключатель pretty-print с выбираемым отступом (2 / 4 / 8 пробелов) для JSON- и XML-вывода — включено для человеческого чтения, выключено для компактной передачи
  • Управление окончанием строк (LF vs CRLF) для совместимости Unix vs Windows, плюс необязательный переключатель UTF-8 BOM для систем, требующих метку порядка байтов
  • Настраиваемый префикс атрибутов соответствует соглашениям ниже по цепочке: `@` (по умолчанию), `_`, `xml:` или любая другая строка — конвертированный вывод drop-in совместим с вашим пайплайном
  • «Копировать» и «Скачать» (`converted.txt`) одним кликом для вывода; ошибки конвертации возникают встроенно с сообщением парсера — вы знаете, был ли XML некорректным или JSON непредставим как XML
  • Полностью на стороне клиента: парсинг через встроенный DOMParser для XML и JSON.parse для JSON. Сетевых вызовов нет, работает офлайн после кеширования страницы

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

  1. Вставьте ваш XML или JSON в панель «Ввод». При режиме «Автоопределение» конвертер определяет формат автоматически.
  2. Настройте переключатель Pretty и размер отступа для управления форматом; переключайте Окончание строки между LF и CRLF по необходимости.
  3. Откройте «Дополнительные настройки», чтобы выбрать Режим атрибутов (Префикс или Объект), задать Префикс атрибутов и переключить CDATA/Текст-#text.
  4. Нажмите «Конвертировать». Панель «Вывод» показывает результат; конвертация работает в браузере через DOMParser + JSON.parse.
  5. Используйте «Копировать», чтобы поместить результат в буфер обмена, или «Скачать», чтобы сохранить как `converted.txt`.
  6. Если парсинг не удался, встроенная строка ошибки покажет нижележащее сообщение — исправьте ввод и сконвертируйте заново.

Советы и лучшие практики

  • При отладке XML-нагрузки SOAP-сервиса автоопределение + режим атрибутов «Объект» + CDATA-#text дают самый чистый JSON-вид.
  • Установите Окончание строки в CRLF и включите BOM при генерации вывода для legacy-инструментов Windows.
  • Смените префикс атрибутов с `@` на `_`, если ваши JSON-потребители отвергают ключи, начинающиеся с `@` (некоторые парсеры на базе YAML так делают).
  • Если JSON-в-XML вывод ставит элементы в неправильном порядке, перевставьте топ-уровневые ключи в исходном JSON в нужной последовательности.
  • Сочетайте с JSON Formatter для дальнейшей инспекции или преобразования конвертированного JSON; XML Formatter на стороне XML.

Вопросы и ответы

Как Режим атрибутов меняет JSON-вывод?

В режиме «Префикс» атрибуты XML появляются как соседние ключи с настроенным префиксом — `<user id="42"/>` становится `{ "user": { "@id": "42" } }`. В режиме «Объект» атрибуты собираются под одним ключом `$`, так что содержимое элемента и атрибуты не делят пространство имён. Выберите «Префикс», когда потребители ожидают плоские ключи; «Объект» — когда нужно однозначно вернуть атрибуты в XML.

Зачем нужен CDATA-как-#text?

XML имеет два способа нести текст — `<a>plain</a>` и `<a><![CDATA[plain]]></a>`. При включённой опции обе формы схлопываются в ключ `#text` в JSON; смешанное содержимое вроде `<p>Привет <b>мир</b></p>` выживает round-trip. Выключено сохраняет структурное различие; полезно, когда оригинальные CDATA-маркеры семантически значимы (например, встроенные скрипты).

Зачем переключатель BOM?

Некоторые Windows-инструменты (Excel, старый PowerShell, .NET TextReader без явной кодировки) ожидают UTF-8 BOM (`EF BB BF`) в начале файла. Современные веб-инструменты и Unix-конвейеры обычно считают BOM шумом. Включайте переключатель для BOM-чувствительного Windows-инструмента, выключайте для остального.

Почему LF против CRLF?

Windows-инструменты и старые форматы Microsoft ожидают `\r\n` (CRLF); Unix/Linux/macOS используют `\n` (LF) по умолчанию. Git обычно нормализует оба, но артефакты, обходящие git (загрузки, вставки в Блокнот, выходы сборки), нуждаются в явном выборе. Парсер автоопределения игнорирует окончания строк; этот контроль влияет только на вывод.

Сохраняются ли пространства имён при конвертации?

Имена элементов и атрибутов с префиксом пространства имён выживают как литеральные строки (например, `xmlns:soap` становится ключом `@xmlns:soap`). Конвертер не разрешает пространства имён против URI — если нижестоящий пайплайн требует разрешения, сделайте этот шаг отдельно. Round-trip обратно в XML сохраняет начальные префиксы.

Что происходит с пустыми элементами?

Пустой XML-элемент `<a/>` становится `{ "a": null }` в JSON (или `{ "a": "" }`, если был `<a></a>` с пустым текстом и CDATA-#text включен). При движении из JSON в XML значение `null` выдаёт самозакрывающийся элемент. Round-trip стабилен, пока вы не переключаете настройку CDATA-#text между направлениями.

Почему мой JSON-в-XML вывод имеет упорядоченные ключи?

XML-элементы имеют определённый порядок; JavaScript-объекты сохраняют порядок вставки для строковых ключей, поэтому конвертер пишет элементы в порядке, в котором их ключи появились в JSON. Если JSON пришёл из round-trip JSON.parse, порядок совпадает с источником; построено программно — управляйте порядком, вставляя ключи в нужной последовательности.

Безопасно ли конвертировать большие документы в этой вкладке?

Документы среднего мегабайтного размера конвертируются менее чем за секунду. Очень большие (>10 МБ) работают, но удерживают UI-поток в течение парсинга; для такой нагрузки запускайте ту же логику в Web Worker или скрипте сборки. Сервис конвертации одинаков в обоих контекстах.