Как проверить XML по XSD-схеме: xmllint, PowerShell и разбор ошибок
Checkcraft — программа для проверки API и логов без кода, есть бесплатная версия. Скачать без регистрации →
Онлайн-валидаторы просят загрузить файл на чужой сервер, а в XML часто реквизиты и персональные данные. Проверить файл по схеме можно и у себя, одной командой.
Linux и macOS: xmllint
xmllint входит в библиотеку libxml2 и обычно уже установлен, в Debian и Ubuntu он в пакете libxml2-utils. Команда проверяет файл по схеме и для каждой ошибки называет строку. Если ошибок нет, она пишет, что файл прошёл проверку.
xmllint --noout --schema schema.xsd file.xmlWindows: 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Как получить и запустить приложениеСкачивание без регистрации и почты, архив готов за пару минут. Состав бесплатной версии опубликован на странице тарифов.
Документация
Начните с примера по ссылкам и сопоставьте результат с требованием своей проверки.