Форматирование и проверка XML
Форматируйте, минифицируйте и проверяйте XML с точными позициями ошибок
Об этом инструменте
Этот инструмент форматирует XML с выбранным отступом, указывает на нарушения корректности (well-formedness) с точной строкой и колонкой и умеет минифицировать документ в одну строку. Комментарии, секции CDATA и XML-пролог переживают форматирование — удивительно многие форматтеры молча их съедают.
Проверка здесь означает well-formedness: правильно вложенные теги, атрибуты в кавычках, допустимые символы. Это ловит подавляющее большинство ошибок ручного редактирования — пропущенный слэш, незакрытый элемент, случайный амперсанд. Проверка по XSD-схеме сознательно оставлена за рамками: ей место в вашем сборочном конвейере, где есть файл схемы.
Конфиги, SOAP-нагрузки, RSS-ленты и манифесты Android регулярно содержат внутренние хосты и ключи. Всё разбирается локально — ничего не передаётся.
Частые вопросы
- Почему мой XML падает с ошибкой «char … is not expected»?
- Обычные подозреваемые — голый &, который должен быть &, значение атрибута без кавычек или теги, закрывающиеся в неверном порядке. Сообщение об ошибке содержит строку и колонку первого проблемного символа, а поле ввода его помечает.
- Переупорядочивает или нормализует ли форматтер документ?
- Нет. Элементы, атрибуты и их порядок сохраняются в точности; меняются только пробелы между элементами. Текст, делящий строку с разметкой, обрезается, а внутренние последовательности пробелов сворачиваются — если вы полагаетесь на значимые пробелы (xml:space="preserve"), держите такие участки минифицированными.
- Что удаляет минификация?
- Отступы и переводы строк между элементами, а также комментарии. Секции CDATA, инструкции обработки и пролог остаются. Результат разбирается идентично для любого потребителя, не зависящего от текстовых узлов из одних пробелов.
- Умеет ли он проверять по XSD или DTD?
- Нет — здесь проверяется только well-formedness. Проверка по схеме требует файла схемы и XSD-движка, и её лучше делать в вашем тулчейне (xmllint --schema или XML-библиотека вашего языка).