|
v7: Меркурий, Ветис.API и проверка по схеме | ☑ | ||
---|---|---|---|---|
0
AlexSTAL
14.06.18
✎
18:58
|
кто подскажет, можно ли проверить сформированный XML-запрос к сервису Ветис.API WSDL по средством XSD-схем?
Покрутил как мог: XML_DOM = CreateObject("Msxml2.DOMDocument.6.0"); Header = XML_DOM.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""" ); XML_DOM.appendChild(Header); ... Schema = СоздатьОбъект("msxml2.xmlschemacache.6.0"); Schema.add("http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2", КаталогИБ() + "registry_ws_definitions_v2.1.xsd"); Schema.add("http://api.vetrf.ru/schema/cdm/dictionary/v2", КаталогИБ() + "dictionary_v2.1.xsd"); Schema.add("http://api.vetrf.ru/schema/cdm/base", КаталогИБ() + "base_v2.0.xsd"); XML_DOM.schemas = Schema; ////собственно проверка на валидность Ошибка = XML_DOM.validate(); Если Ошибка.errorCode = 0 Тогда Предупреждение("Документ соответствует схеме"); Иначе //// в свойстве .reason содержится причина ошибки. Предупреждение("ОШИБКА: "+Ошибка.reason); КонецЕсли; ответ: Узел не является ни допустимым, ни недопостимым, поскольку не найдено объявление в DTD и схеме |
|||
1
php5
14.06.18
✎
20:16
|
(0) Попробуй этим сервисом проверить -> https://www.freeformatter.com/xml-validator-xsd.html
|
|||
2
AlexSTAL
14.06.18
✎
20:30
|
(1) Все сервисы, которые я нашёл, рассчитаны только на 1 схему, а в XML их несколько
Да и сама проверки тестового запроса не нужна - он корректно обрабатывается сервисом и возвращается ответ Мне нужен для проверки запросов перед отправкой |
|||
3
AlexSTAL
15.06.18
✎
10:13
|
Так. Наметился прогресс...
Создал тестовый XML и тестовую схему XSD (с тегами импорта других XSD). Проверил в XML-редакторах валидность и работоспособность - всё ок. Делаю всё то же в 1С - болт, ошибка: "Элемент "Envelope" используется, но не был объявлен в DTD и схеме" Странно, попробовал в 1С просто загрузить XML из файла и проверить на валидность - работает! Так... Генерю XML файл, сохраняю, сразу его читаю, проверяю - работает! Посмотрел все свойства и методы - ничего не нашёл, связанно с кэшированием или прочим, пробовал вставлять паузу 10 секунд, пробовал атрибуты "async" и "validateOnParse" - без сохранения не проходит валидацию. Пробовал и 4-ую и 6-ую версию Подскажите, возможно ли без сохранения/чтения проверять на валидность? |
|||
4
Сияющий в темноте
15.06.18
✎
10:15
|
Наверное,если сохранить в строку и прочитать из строки,то тоже должно работать.
Проверка работает на уже сформированном xml,а не на стадии формирования. |
|||
5
AlexSTAL
15.06.18
✎
10:29
|
(4) Да, такая конструкция так же работает XML_DOM.LoadXML(XML_DOM.xml);
Так формирование же завершено, может команда есть какая, "закончить документ"? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |