Проверка XML-кода на XSD в чистом ABAP

Есть ли какой-либо стандартный способ выполнения проверки XML-документа с использованием XSD в ABAP? Насколько мне известно, существует подход, который использует возможности XI/PI, но они недоступны в нашей системе.

Я думаю, мы могли бы также использовать обходной путь: сделать автономный Java RFC или веб-сервис на любом другом языке, который возьмет XML и XSD из SAP, проведет проверку и вернет результат обратно в SAP; но это может быть более сложным и менее надежным решением.

Вы столкнулись с подобной задачей и как вы ее разрешили? Любые предложения, комментарии и даже вопросы разъяснения высоко ценятся!

Ответ 1

Если кто-нибудь приходит...

Насколько мне удалось найти во время поиска в Интернете до сих пор, в ABAP нет собственного способа проверки документа XML в отношении схемы XSD. Лучший вариант, который у вас есть, - DTD.

Мои образцы кода не завершены, поэтому копирование и вставка не будут работать, но в основном то, что я сделал, это сохранить схему XSD на сервере приложений и XML файл во временном каталоге. Я вызываю java-программу и передаю ее XML и XSD файл в качестве аргументов.

введите описание изображения здесь

Вот код java

Java XSD Validator

В ABAP вы можете вызвать эту команду и передать файл, сохраненный с помощью OPEN DATASET. Вот пример кода:

ABAP Validator и команда OS

Это работает, но это довольно медленно. Я нахожусь на компьютере с довольно скромным оборудованием по сравнению с живым сервером, но он занимает около 350 мс за проверку с небольшим XSD и небольшим XML.

Я не уверен, что запуск его как службы или RFC повысит производительность, но если вы хотите, чтобы это было сделано.

Ответ 2

Используйте этот отчет для проверки соответствия XSD в ABAP: RPCXMLK0_VALIDATE
Он также может быть запущен программно.