← Все гайды

Проверка XML онлайн: синтаксис и структура документа

· 2 мин чтения

XML

Как проверить XML на корректность: незакрытые теги, неверные символы и пространства имён подсвечиваются в строке, дерево документа показывает структуру.

Ошибка в XML обычно всплывает уже в системе-получателе: «XML document structures must start and end within the same entity», «The markup in the document following the root element must be well-formed». Найти её до отправки помогает редактор XML.

Как проверить XML

  1. Откройте песочницу XML и вставьте документ или откройте файл (Файл → Открыть файл…, можно перетащить файл в редактор).
  2. Синтаксис проверяется по мере ввода. Над редактором — статус: «Ошибок нет» или «Ошибка синтаксиса»; место ошибки подсвечено в строке.
  3. Справа — дерево документа. Щелчок по узлу переводит к его строке в коде.
Документ XML и дерево элементов
Дерево документа справа; щелчок по узлу — переход к коду

Что проверяется

Проверяется правильность XML (well-formedness) по спецификации XML 1.0:

  • каждый открытый тег закрыт, теги вложены правильно, корневой элемент один;
  • значения атрибутов в кавычках, атрибуты в элементе не повторяются;
  • спецсимволы экранированы: &, < — или текст обёрнут в CDATA;
  • префиксы пространств имён объявлены (xmlns:soap="…").

Правильный XML ещё не значит, что он подходит получателю: состав элементов, типы и обязательность проверяются по схеме XSD — см. «Проверка XML по XSD».

Частые ошибки

  • Неэкранированный амперсанд в тексте: «ООО Рога & Копыта» нужно записать как &.
  • Лишний текст до объявления <?xml …?> — например, пустая строка или BOM в начале файла.
  • Регистр тегов: <Order>…</order> — разные теги.
  • Неизвестный префикс: <ns2:item> без объявления xmlns:ns2.

Что ещё можно сделать с документом

Пример

<?xml version="1.0" encoding="UTF-8"?>
<order id="42">
  <customer>ООО Рога & Копыта</customer>
  <items>
    <item sku="A-1">Книга
  </items>
</order>

Здесь две ошибки: неэкранированный & в названии и незакрытый <item>. Редактор отметит первую; после замены на &amp; — вторую. Исправленный вариант: ООО Рога &amp; Копыта и <item sku="A-1">Книга</item>.

Вопросы и ответы

Как отформатировать XML с отступами? Отдельной команды форматирования для XML нет; структуру удобно смотреть в дереве справа. Для чтения больших выгрузок помогает сворачивание блоков у номеров строк.

Проверяется ли DTD? Нет: внешние DTD не загружаются, а проверка по структуре делается по XSD. Объявление <!DOCTYPE> не мешает проверке синтаксиса.

Что делать с кодировкой windows-1251? Редактор работает с текстом в UTF-8. Если файл в другой кодировке, кириллица может открыться «кракозябрами» — пересохраните файл в UTF-8 и поменяйте encoding в объявлении.