Что такое форматирование XML?
XML (Extensible Markup Language) — это стандартизированный W3C текстовый формат для структурированных документов и обмена данными. Форматирование — также называемое pretty-printing или beautifying — берёт правильно сформированный XML-источник и переставляет отступы так, что каждый элемент, атрибут, комментарий, инструкция обработки и секция CDATA удобно читаются. Разобранное дерево документа сохраняется в точности; меняется только пробельный материал между элементами.
Как работает форматирование XML?
Ваш ввод полностью обрабатывается в браузере с помощью встроенных API DOMParser и XMLSerializer плюс собственного рекурсивного индентера. Основные шаги:
- Ввод считывается из текстового поля побайтно — каждый байт, который вы вставили, остаётся в локальной памяти.
- Браузер разбирает его с помощью
new DOMParser().parseFromString(text, 'application/xml'). Если ввод не является правильно сформированным, парсер встраивает узел<parsererror>, текстовая нагрузка которого несёт подсказки движка о строке и столбце — они выводятся дословно в полосе ошибок. - При успешном разборе собственный индентер обходит дерево DOM в глубину, выводя каждый элемент, набор атрибутов, секцию CDATA, комментарий и инструкцию обработки на отдельной строке на текущей глубине. Самозакрывающиеся пустые теги учитываются, когда соответствующая опция включена.
- Режим минификации переворачивает конвейер:
XMLSerializer().serializeToString(doc)выдаёт однострочную форму, а затем защищённое регулярное выражение убирает пробелы между элементами, не трогая текст внутри блоков CDATA и непробельных текстовых узлов. - Результат записывается в текстовое поле только для чтения, полоса ошибок очищается, а кнопка Скачать упаковывает результат в файл
.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.