К содержанию
CheckcraftСкачать
Практический сценарий

Как проверить XML по XSD-схеме: xmllint, PowerShell и разбор ошибок

Checkcraft — программа для проверки API и логов без кода, есть бесплатная версия. Скачать без регистрации →

Онлайн-валидаторы просят загрузить файл на чужой сервер, а в XML часто реквизиты и персональные данные. Проверить файл по схеме можно и у себя, одной командой.

Checkcraft ·

Поможем с первой проверкой →

Linux и macOS: xmllint

xmllint входит в библиотеку libxml2 и обычно уже установлен, в Debian и Ubuntu он в пакете libxml2-utils. Команда проверяет файл по схеме и для каждой ошибки называет строку. Если ошибок нет, она пишет, что файл прошёл проверку.

xmllint --noout --schema schema.xsd file.xml

Windows: PowerShell без установки программ

В Windows проверку выполняет встроенная платформа .NET. Сохраните скрипт рядом с файлами и запустите его в PowerShell: он выведет каждую ошибку с номером строки. Если вывода нет, файл соответствует схеме.

# Windows PowerShell: проверка file.xml по schema.xsd
$xml = (Resolve-Path "file.xml").Path
$xsd = (Resolve-Path "schema.xsd").Path
$settings = New-Object System.Xml.XmlReaderSettings
$settings.ValidationType = [System.Xml.ValidationType]::Schema
$settings.Schemas.Add($null, $xsd) | Out-Null
$settings.add_ValidationEventHandler({ param($s, $e) Write-Host "$($e.Severity): строка $($e.Exception.LineNumber): $($e.Message)" })
$reader = [System.Xml.XmlReader]::Create($xml, $settings)
while ($reader.Read()) { }
$reader.Close()

Типичные ошибки

Элемент не ожидается здесь: нарушен порядок или имя тега не то, что в схеме. Отсутствует обязательный элемент: в XML не хватает тега, который схема требует. Значение не соответствует типу или шаблону: дата не в формате ГГГГ-ММ-ДД, лишние пробелы или неверная длина. Ошибки про пространство имён означают, что xmlns в файле не совпадает с targetNamespace схемы.

Когда XML приходит от API

Если XML — ответ SOAP- или REST-сервиса, кроме схемы важно проверить значения: код результата, суммы, наличие Fault. Checkcraft по XSD не проверяет, но проверяет нужные теги и значения в ответе правилами XML без кода.

Следующий шаг

Повторите это на своём API

Checkcraft — настольная программа: сохраняет проверки ответа API без кода и показывает, что не совпало. Начните с учебного примера, затем подставьте свои обезличенные данные. Free работает на Windows и Linux без ограничения срока.

Скачать FreeКак получить и запустить приложение

Скачивание без регистрации и почты, архив готов за пару минут. Состав бесплатной версии опубликован на странице тарифов.

Документация

Справка xmllint

Начните с примера по ссылкам и сопоставьте результат с требованием своей проверки.

Можно спросить человека

Поможем с первой проверкой

Расскажите, что хотите проверить или на каком шаге остановились. Поможем запустить Checkcraft, подобрать пример и разобраться с первым прогоном. Можно написать до скачивания.

Telegram-группа открытая: не публикуйте пароли, токены и конфиденциальные рабочие данные. Для первого вопроса достаточно описания задачи.

Можно написать напрямую support@checkcraft.ru

Без регистрации. Ответим по email. Это обращение в поддержку, а не подписка на рассылку.