Ошибка в 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
- Откройте песочницу XML и вставьте документ или откройте файл (Файл → Открыть файл…, можно перетащить файл в редактор).
- Синтаксис проверяется по мере ввода. Над редактором — статус: «Ошибок нет» или «Ошибка синтаксиса»; место ошибки подсвечено в строке.
- Справа — дерево документа. Щелчок по узлу переводит к его строке в коде.

Что проверяется
Проверяется правильность XML (well-formedness) по спецификации XML 1.0:
- каждый открытый тег закрыт, теги вложены правильно, корневой элемент один;
- значения атрибутов в кавычках, атрибуты в элементе не повторяются;
- спецсимволы экранированы:
&,<— или текст обёрнут в CDATA; - префиксы пространств имён объявлены (
xmlns:soap="…").
Правильный XML ещё не значит, что он подходит получателю: состав элементов, типы и обязательность проверяются по схеме XSD — см. «Проверка XML по XSD».
Частые ошибки
- Неэкранированный амперсанд в тексте: «ООО Рога & Копыта» нужно записать как
&. - Лишний текст до объявления
<?xml …?>— например, пустая строка или BOM в начале файла. - Регистр тегов:
<Order>…</order>— разные теги. - Неизвестный префикс:
<ns2:item>без объявленияxmlns:ns2.
Что ещё можно сделать с документом
- Вывести из примера схему XSD — «Генератор XSD из XML».
- Преобразовать в JSON — «Конвертер XML в JSON».
Пример
<?xml version="1.0" encoding="UTF-8"?>
<order id="42">
<customer>ООО Рога & Копыта</customer>
<items>
<item sku="A-1">Книга
</items>
</order>
Здесь две ошибки: неэкранированный & в названии и незакрытый <item>. Редактор отметит первую; после замены на & — вторую. Исправленный вариант: ООО Рога & Копыта и <item sku="A-1">Книга</item>.
Вопросы и ответы
Как отформатировать XML с отступами? Отдельной команды форматирования для XML нет; структуру удобно смотреть в дереве справа. Для чтения больших выгрузок помогает сворачивание блоков у номеров строк.
Проверяется ли DTD? Нет: внешние DTD не загружаются, а проверка по структуре делается по XSD. Объявление <!DOCTYPE> не мешает проверке синтаксиса.
Что делать с кодировкой windows-1251? Редактор работает с текстом в UTF-8. Если файл в другой кодировке, кириллица может открыться «кракозябрами» — пересохраните файл в UTF-8 и поменяйте encoding в объявлении.
