Интеграция Spring - добавление информации в фильтр с помощью XmlValidatingMessageSelector DSL

Лучше объясни.

Я хочу проверить xml в DSL, который применяет тот или иной xsd в зависимости от одного из полей xml.

А сейчас выглядят так:

Прочитать из MongoDB -> Разделить файлы JSON -> попытаться проверить. Но я хочу передать в качестве параметра тот же XML, а не «classpath: validation.xsd».

return IntegrationFlows.from(configurationInbound(factory))
                .split(Configuration.class,m->m.getFiles().values())
                .filter(new XmlValidatingMessageSelector(commonResources.getResource("classpath:validation.xsd"),
                        SchemaType.XML_SCHEMA))

Есть ли способ сделать это?


person Guillermo Garcia    schedule 22.05.2018    source источник


Ответы (1)


Ваше объяснение немного неясно, но позвольте мне угадать:

Вы хотите использовать ресурс XSD из сообщения, проходящего через поток, не настроенный статически для упомянутого XmlValidatingMessageSelector.

Если это так, то, к сожалению, именно так устроен этот XmlValidatingMessageSelector.

В качестве решения я предлагаю реализовать свой собственный DynaicXmlValidatingMessageSelector с некоторой скопированной логикой из существующего XmlValidatingMessageSelector и создать XmlValidator в методе accept() на лету на основе входящего сообщения.

person Artem Bilan    schedule 22.05.2018
comment
Простите мое плохое выражение. Это было то, что я искал. URL-адрес из локального XSD в поле XML. Я собираюсь продолжить то, о чем вы мне сказали. Спасибо - person Guillermo Garcia; 22.05.2018