§

Вставьте XML

§

Параметры

Режим
Отступ
XML-декларация
Самозакрывающиеся пустые теги
§

Отформатированный вывод

xml

Форматирование XML — повседневный рабочий инструмент в российской IT-практике. ФНС России принимает электронную отчётность через СБИС и оператора ЭДО в виде XML-документов с XAdES-подписью; банки уровня Сбербанка и ВТБ всё ещё держат legacy-эндпоинты SOAP для корпоративных интеграций. Центральный банк России публикует XBRL-отчётность кредитных организаций в формате XML, а Яндекс и РБК отдают RSS-ленты ровно такими же. ГИС ЖКХ использует регламентированные XML-схемы для обмена данными о коммунальных услугах, ГОСТ Р 34.10 описывает XML-Signature на отечественной криптографии, а 1С:Бухгалтерия экспортирует регламентные документы и обмен УПД через XML-структуры.

Что такое форматирование XML?

XML (Extensible Markup Language) — это стандартизированный W3C текстовый формат для структурированных документов и обмена данными. Форматирование — также называемое pretty-printing или beautifying — берёт правильно сформированный XML-источник и переставляет отступы так, что каждый элемент, атрибут, комментарий, инструкция обработки и секция CDATA удобно читаются. Разобранное дерево документа сохраняется в точности; меняется только пробельный материал между элементами.

Как работает форматирование XML?

Ваш ввод полностью обрабатывается в браузере с помощью встроенных API DOMParser и XMLSerializer плюс собственного рекурсивного индентера. Основные шаги:

  1. Ввод считывается из текстового поля побайтно — каждый байт, который вы вставили, остаётся в локальной памяти.
  2. Браузер разбирает его с помощью new DOMParser().parseFromString(text, 'application/xml'). Если ввод не является правильно сформированным, парсер встраивает узел <parsererror>, текстовая нагрузка которого несёт подсказки движка о строке и столбце — они выводятся дословно в полосе ошибок.
  3. При успешном разборе собственный индентер обходит дерево DOM в глубину, выводя каждый элемент, набор атрибутов, секцию CDATA, комментарий и инструкцию обработки на отдельной строке на текущей глубине. Самозакрывающиеся пустые теги учитываются, когда соответствующая опция включена.
  4. Режим минификации переворачивает конвейер: XMLSerializer().serializeToString(doc) выдаёт однострочную форму, а затем защищённое регулярное выражение убирает пробелы между элементами, не трогая текст внутри блоков CDATA и непробельных текстовых узлов.
  5. Результат записывается в текстовое поле только для чтения, полоса ошибок очищается, а кнопка Скачать упаковывает результат в файл .xml, который можно отправить или приложить к тикету.

Зачем pretty-print XML этим инструментом?

  • Конфиденциальность: каждый проход разбора, форматирования и минификации происходит в вашем браузере. XML никогда не попадает на наши серверы — без загрузки, без телеметрии, без аккаунта.
  • Точные ошибки: когда ввод некорректен, парсер показывает точные строку и столбец, которые сам движок браузера сообщает — не синтетическую догадку, а те же номера, что вы увидели бы в DevTools.
  • Точный round-trip: форматируете, затем минифицируете — и получаете байт-эквивалент исходного документа (с учётом опции XML-декларации) — форматирование никогда не реканонизирует пространства имён и не переставляет атрибуты.
  • Быстро: чистый DOMParser плюс ~60-строчный индентер мгновенно обрабатывают многомегабайтные SOAP-конверты и куски OOXML, без загрузки внешних библиотек.

Каковы распространённые применения форматирования XML?

Pretty-print XML встречается в веб-публикации, корпоративной интеграции и архивации данных:

  • Просмотр RSS / Atom: вставьте тело подкаста или новостной ленты, чтобы проверить метаданные канала, порядок элементов и префиксы пространств имён перед публикацией.
  • Отладка SOAP: отформатируйте конверт, скопированный из Wireshark или лога SOAP-клиента, чтобы Header, Body и Fault были видны с первого взгляда.
  • Аудит карт сайта: повторно расставьте отступы в sitemap.xml, забранном у конкурента или из вашего staging-сайта, чтобы посчитать записи и подтвердить hreflang-альтернаты на URL.

Как выглядит пример форматирования XML?

Вставка трёхэлементного <feed><entry><title>Hello</title></entry></feed> и нажатие Форматировать с опцией отступа в 2 пробела даёт четырёхстрочный документ, где каждый элемент сидит на отдельной строке с отступом по глубине. Переключение на Минификацию на том же вводе свёртывает его обратно в исходную побайтовую строку. Round-trip без потерь для любого правильно сформированного документа.

Работает ли это офлайн?

Да. Конвейер форматирования и минификации — это чистый DOMParser + XMLSerializer плюс крошечный рекурсивный индентер, всё работает внутри вкладки браузера. Ничего не загружается, ни один service worker не проксирует ваш ввод, а страница делает ноль сетевых запросов на сам шаг форматирования. Единственный исходящий трафик — это стандартные ресурсы загрузки страницы (CSS, шрифты, аналитика) — ваш XML никогда не достигает Ultim8Soft.

Меняет ли форматирование документ?

Без семантических изменений. Форматирование лишь переписывает пробельный материал между элементами. Имена элементов, значения атрибутов, текстовое содержимое, нагрузки CDATA, комментарии и инструкции обработки сохраняются побайтно. Объявления пространств имён и префиксы остаются ровно такими, как их написал ввод — форматировщик не реканонизирует и не переставляет атрибуты. Вывод парсится в то же дерево DOM, что и ввод, с учётом опционального переключателя XML-декларации.

Как обрабатываются CDATA / комментарии / инструкции обработки?

Каждая выводится дословно на отдельной строке на текущей глубине отступа. Нагрузки CDATA оборачиваются в <![CDATA[…]]> без переставления отступов внутри — спецификация говорит, что содержимое CDATA непрозрачно, поэтому форматировщик никогда его не трогает. Комментарии используют <!-- … -->; инструкции обработки используют <?target data?>. Все три переживают round-trip формат → минификация → формат с сохранением содержимого.

В чём разница между форматированием и минификацией XML?

Форматирование расширяет пробельный материал, чтобы люди могли читать дерево документа; минификация убирает его обратно для передачи и хранения. Обе операции работают над разобранным DOM, а не над сырой байтовой строкой, поэтому round-trip формат → минификация на правильно сформированном документе даёт байт-эквивалент исходной минифицированной формы. Используйте направление формата, когда нужно читать или сравнивать XML-нагрузку, и направление минификации, когда нужно передать её через тарифицируемый API-шлюз или встроить в другой документ.

Этот форматировщик XML использует тот же парсер, который ваш браузер использует для XHR-ответов AJAX и SVG-документов, поэтому любой правильно сформированный XML — RSS, Atom, SOAP, sitemap, OOXML, SVG — round-trip-ится чисто. Вставьте любой XML выше, скопируйте результат или скачайте его как .xml.