Форматтер XML
Форматируйте XML с правильной вложенностью и отступами или минифицируйте его. Секции CDATA, комментарии и атрибуты, содержащие угловые скобки, сохраняются в точности, а несбалансированные теги выявляются.
- Файлы никогда не покидают ваше устройство
- Бесплатно, без регистрации
- Без водяных знаков
- Работает офлайн после загрузки
Как пользоваться: форматтер xml
- 1
Вставьте XML
Минифицированный фид, конфигурационный файл, SOAP-ответ — что угодно.
- 2
Форматируйте или минифицируйте
Расставьте отступы для чтения или сожмите для передачи.
- 3
Проверьте на ошибки
Несовпадающие и незакрытые теги называются явно.
Где на самом деле ломаются XML-форматтеры на регулярных выражениях
Форматтер, построенный на регулярных выражениях — вставляющий перенос строки перед каждым `<` и расставляющий отступы на основе текущего счётчика открытых тегов, — работает более-менее приемлемо на простом, написанном вручную XML и даёт сбой на реальных документах по причинам, которые легко упустить из виду, пока они не приведут к повреждённому файлу. Секция CDATA, записанная как `<![CDATA[...]]>`, существует специально для хранения произвольного текста, который сам может содержать символы, похожие на теги, и регулярное выражение, ищущее `<`, никак не может знать, что должно игнорировать всё между этими маркерами, а не воспринимать содержимое как структуру. Комментарии несут тот же риск, а значения атрибутов ещё хуже: атрибут вроде `note="a > b"` содержит буквальный символ `>`, который наивный сканер может принять за конец тега, незаметно обрезав его не в том месте.
Правильное форматирование XML означает, что сканер должен распознавать эти особые области — блоки CDATA, комментарии, инструкции обработки, объявления DOCTYPE и значения атрибутов в кавычках — до того, как искать что-либо похожее на структуру тегов, чтобы их содержимое передавалось байт в байт, а не переинтерпретировалось как разметка.
Валидация здесь означает корректность формы, а не соответствие схеме
Этот инструмент проверяет, что каждый тег правильно закрыт и правильно вложен — структурные правила, делающие документ «правильно сформированным» (well-formed) XML, — и сообщает конкретный несовпадающий или незакрытый тег, если проверка не проходит. Чего он не делает — так это не валидирует документ по DTD или XML Schema (XSD), что дополнительно проверило бы, соответствуют ли конкретные элементы, атрибуты и их значения правилам определённого типа документа: присутствует ли обязательный атрибут, появляется ли элемент в правильном контексте, соответствует ли значение ожидаемому типу данных. Это принципиально другая и более сложная проверка, требующая самого документа схемы в качестве дополнительных входных данных, — то, что форматтер общего назначения не может вывести из одного лишь XML.
Почему HTML нужен совершенно другой инструмент
Строгий XHTML является валидным XML и корректно форматируется здесь, но обычный реальный HTML — нет, по причинам, заложенным в самой спецификации HTML: пустые элементы вроде `<br>` и `<img>` никогда не закрываются и вообще не имеют закрывающего тега, у нескольких тегов закрывающие теги необязательны и автоматически подразумеваются браузерами, а браузеры допускают некорректную вложенность, которую строгий разбор XML сразу отклонил бы как ошибку. Строгий XML-форматтер, применённый к типичному HTML, выдавал бы ошибки на каждой корректной, совершенно обычной странице, и именно поэтому для HTML существует отдельный форматтер, построенный вокруг настоящего HTML-парсера, который понимает эти специфичные для HTML правила, а не рассматривает документ как строгий XML.
Где XML всё ещё важен, несмотря на доминирование JSON
JSON заменил XML как выбор по умолчанию для новых веб-API, но огромная часть инфраструктуры была построена ещё до этого сдвига и до сих пор работает на XML: SOAP веб-сервисы, RSS- и Atom-фиды, SVG-изображения (сами по себе являющиеся XML), форматы документов Office внутри себя и длинный хвост корпоративных систем и форматов конфигурации, появившихся до популярности JSON. Каждому, кто интегрируется с одной из таких более старых или более формальных систем, всё ещё нужно читать, отлаживать и создавать правильно сформированный XML, и это ровно та аудитория, которой продолжает служить выделенный XML-форматтер, даже несмотря на то, что XML отступил на второй план в дизайне новых API.
Часто задаваемые вопросы
Валидирует ли он мой XML?
Инструмент проверяет, что теги сбалансированы и правильно вложены, и называет проблемный тег, если это не так. Он не валидирует по схеме DTD или XSD — для этого нужна сама схема, и это другая задача.
Сохраняются ли секции CDATA и комментарии?
В точности как написаны. Сканер распознаёт `<![CDATA[…]]>`, комментарии, инструкции обработки и объявления DOCTYPE до того, как искать теги, поэтому разметка внутри них никогда не принимается за структуру — а именно на этом форматтеры на основе регулярных выражений портят файлы.
А как насчёт атрибутов, содержащих < или >?
Обрабатываются корректно. Сканер отслеживает кавычки во время чтения тега, поэтому атрибут вроде `note="a > b"` не завершает тег преждевременно. Это распространённая проблема в простых форматтерах.
Можно ли использовать его для HTML?
Для строгого XHTML — да. Реальный HTML содержит пустые элементы вроде `<br>` и `<img>`, которые никогда не закрываются, а также необязательные закрывающие теги, поэтому для HTML правильным инструментом будет форматтер HTML — он использует настоящий HTML-парсер.
Частые задачи: форматтер xml
Вам также может понадобиться
Форматтер JSON
Мгновенное форматирование, валидация и минификация JSON
Форматировщик HTML
Аккуратное форматирование и расстановка отступов в HTML
Форматтер SQL
Форматирование запросов с правильными отступами для каждого раздела
Кодировщик и декодировщик Base64
Кодирование и декодирование Base64 и Base64URL
Форматировщик CSS
Форматирование и минификация таблиц стилей
Минификатор CSS
Сжимайте таблицы стилей настоящим минификатором, понимающим CSS
Генератор хешей
MD5, SHA-1, SHA-256, SHA-384 и SHA-512
Форматировщик JavaScript
Форматирование JS и TypeScript настоящим парсером