IZN Tools

Форматирование XML

Отформатировать XML и свернуть длинные списки атрибутов.

ВВОД
РЕЗУЛЬТАТ
Ожидание ввода
Посчитано на вашем устройстве

Форматирование — для чтения

XML приходит из API или выгрузки конфигурации одной строкой, и форма документа не видна. Отступы делают вложенность читаемой: какие элементы соседние, какие дочерние, где расположены атрибуты.

Единственное, что надо знать до переформатирования, — смешанное содержимое. В словаре, где текст и элементы делят родителя (абзац с <em> внутри), добавленные пробелы не украшение, а текст. Форматирование такого документа его меняет. Для XML, описывающего данные, — а это почти весь XML на практике — отступы безопасны.

Что уцелеет

  • <![CDATA[...]]> — не тронуто, включая пробелы и символы <
  • <!-- комментарии --> — содержимое сохранено
  • <?xml ... ?> и объявления doctype — остаются сверху, без отступа

Короткий текст в одну строку

Элемент, единственный потомок которого — короткий текст, по умолчанию остаётся однострочным: три строки ради слова «Acme» читаются хуже одной. Отключите, если для сравнения версий нужен каждый элемент на своей строке.

Вопросы

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

В большинстве XML-словарей пробелы между элементами незначимы, поэтому расстановка отступов там безопасна. Но не везде: в документе со смешанным содержимым, где текст и элементы лежат в одном родителе (как в XHTML), добавленные пробелы становятся частью текста. Форматирование нужно для чтения — не коммитьте переформатированный XML туда, где его сравнивают побайтово.

CDATA и комментарии сохраняются?+

Да, оба и побайтово. CDATA существует именно для текста, который нельзя интерпретировать, и переносить в нём отступы означало бы свести на нет его смысл. Комментарии сохраняют содержимое, условные секции не трогаются.

А если документ подписан?+

Не форматируйте его. XML-подпись покрывает каноническую форму документа, и перестановка отступов её ломает. То же касается всего, к чему приложен хеш или дайджест.

Почему в минифицированном выводе остались пробелы?+

Внутри текстового содержимого. Минификация убирает форматирующие пробелы между тегами, а не текст, который написал человек: схлопнуть его — значит изменить данные.