XML форматтер и валидатор

Вставьте XML или откройте файл. Он проверяется по мере ввода, форматируется с выбранным отступом или сжимается, а ошибка показывается со строкой, столбцом и описанием того, что не так. Комментарии, CDATA, doctype и порядок атрибутов остаются как были.

Вставьте его, перетащите файл в поле или откройте. Ничего не загружается.
Результат

Вставьте XML в поле, чтобы отформатировать и проверить его.

XML постоянно встречается в работе с серверами: карты сайта, RSS-ленты, сборки Maven, конфигурации libvirt и Tomcat. Ищете сам сервер? Сейчас от 3,02 € в месяц, на выбор: 2 226 серверов.

Работает в вашем браузере: ничего из введённого не отправляется на сервер.

Как работает XML форматтер

Страница разбирает ваш XML на части: теги, атрибуты, текст, комментарии, секции CDATA, инструкции обработки вроде <?xml …?> и doctype. Затем записывает их заново, каждый элемент в своей строке, с отступом на один уровень на каждый уровень вложенности: 2 пробела, 4 пробела или табуляция. «Сжать» делает обратное и убирает пробельные символы между тегами.

Меняются только пробельные символы между тегами. Текст сохраняется символ в символ, атрибуты остаются в своём порядке и в своих кавычках, а комментарии, CDATA и doctype копируются как написано. Там, где текст смешан с тегами, как в <p>Hello <b>world</b></p>, или где задан xml:space="preserve", пробелы важны, поэтому эта часть остаётся ровно такой, какой была.

Для проверки страница также передаёт ваш XML встроенному в браузер парсеру XML (DOMParser), тому же, что читает файлы RSS и SVG. Он проверяет, что документ синтаксически корректен: один корневой элемент, каждый тег закрыт в правильном порядке, атрибуты в кавычках, ни один атрибут не повторяется, только известные сущности. Ошибки показываются со строкой и столбцом. Проверки по схеме (XSD или DTD) нет, внешние файлы не загружаются никогда.

Пример

Небольшая конфигурация, сжатая в одну строку:

config.xml
<?xml version="1.0"?><config><!-- web tier --><server name="web-1" port="443"><tls enabled="true"/><root>/var/www</root></server></config>

С отступом в 2 пробела она превращается в версию ниже. Комментарий, самозакрывающийся тег <tls/> и порядок атрибутов не меняются; если сжать её снова, получится в точности строка выше.

formatted.xml
<?xml version="1.0"?>
<config>
  <!-- web tier -->
  <server name="web-1" port="443">
    <tls enabled="true"/>
    <root>/var/www</root>
  </server>
</config>

Вопросы

Как отформатировать XML?

Вставьте его в поле выше или откройте файл и выберите 2 пробела, 4 пробела или табуляцию. Отформатированный XML появляется справа по мере ввода; скопируйте его или скачайте файлом. В командной строке то же самое делает xmllint --format file.xml в Linux и macOS.

Как проверить, корректен ли XML?

Вставьте его выше: страница сообщит, синтаксически ли он корректен (well-formed), а если нет — покажет строку, столбец и причину, например несовпадающий закрывающий тег. Well-formed означает, что синтаксис правильный. Проверка по схеме (XSD или DTD) — отдельный шаг, например xmllint --schema schema.xsd file.xml.

Меняет ли форматирование мой XML?

Только пробельные символы между тегами, которые программы для XML обычно игнорируют. Текст, значения атрибутов и их порядок, комментарии, CDATA, инструкции обработки и doctype остаются в точности как написаны. Смешанное содержимое (текст с тегами внутри) и всё под xml:space="preserve" не затрагивается вовсе, потому что там пробелы могут быть важны.

Чем отличается well-formed XML от valid XML?

Well-formed XML следует правилам синтаксиса: один корневой элемент, каждый тег закрыт и правильно вложен, значения атрибутов в кавычках, ни один атрибут не повторяется. Valid XML — это well-formed XML, который к тому же следует схеме или DTD, где сказано, какие элементы и атрибуты разрешены. Парсер прочитает любой well-formed файл; только валидация подтверждает правильную структуру.

Безопасно ли вставлять сюда XML с паролями или ключами?

Да. Форматирование и проверка выполняются в вашем браузере, и ничего из вставленного не отправляется на сервер и не сохраняется. Парсер XML браузера также не загружает внешние DTD и сущности. При закрытии вкладки текст исчезает.