powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Узнать какой xml пришел.
26 сообщений из 26, показаны все 2 страниц
Узнать какой xml пришел.
    #37602925
maksaimer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть spring контроллер, на вход поступает xml(не как параметр, например, xml="..."), может приходить xml разных форматов.
Как мне лучше всего определять какой xml пришел, лучше всего было бы сделать на уровне spring'a, чтобы по виду xml срабатывал тот или иной контроллер?

может кто сталкивался.
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37602935
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за контроллер? MVC? А как он туда приходит?
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37602940
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksaimerпо виду xml
XSD
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603038
maksaimer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет валидации по xsd я знаю.
Насчет контроллеров, это Spring MVC, xml туда приходит по средствам @RequestBody, но мне хочется сделать прослойку на уровне Spring, чтобы в зависимости от пришедшей xml, сробатывал тот или иной метод, можно ли так?
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603057
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поищите по HandlerAdapter в мануале. По-моему это то что вы хотите.
Но вообще есть сомнения на счет того что это наиболее правильный способ. У вас так много разнообразных XML на входе?
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603062
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksaimer,
я не спрашивал про знаю, я спрашивал:
- Валидируете ли вы по XSD ваш XML?
- Позволяет ли его структура такой способ валидации?
А потом уже можно скрещивать бульдога с носорогом (роеализация)
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603073
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123я спрашивал:
- Валидируете ли вы по XSD ваш XML?
- Позволяет ли его структура такой способ валидации?
А потом уже можно скрещивать бульдога с носорогом (роеализация):)
и как вот по трём буквам (XSD), которые ты написал, можно понять, что ты всё это спрашивал?
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603075
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сторону фильтров посмотрите - реквест перехватывется фильтром, потом его тело парсится каким-нибудь XML парсером и определяется его тип, потом направялется соответствующему контроллеру. А можно просто парсить в одном контроллере, а потом перекидывать в другой.
Но оба предложенных мною варианта противоречат идеологии MVC, которая говорит нам, что логика контроллеров должна быть максимально простой и едва ли выходить за границы банального вызова хелперов и диспатчинга модели в соответствующую вьюшку. Потому принципиально правильное решение выглядит примерно так:
Код: java
1.
2.
3.
4.
5.
@Controller
public ModelAndView blabla(String payload) {
    SomeType type = typeHelper.determineType(payload);
    // а тут буквально в несколько строчек построили модель и выплюнули ее в нужный view
}
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603085
maksaimer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svenom,

У меня не будет view части, будет выплевываться такой же XML.

Как вашим способом можно понять что тут именно нужно SomeType, а не SomeType2, к примеру?
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603086
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF
grasoff.net,
ты ж сам немногословный.
ПисАть бОльше должен аффтар, а не отвечающие.
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603093
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам надо принципиально понять одну вещь - задача с вероятностью 99% решается 1 (одним) контроллером. Пришел запрос контроллер, вы его приняли, делегировали обработку какому-либо хелперу, хелпер вернул вам результат, вы его отдали в респонс, все.
Как определить тип - это вопрос к вам, а не ко мне, я же не знаю на основании чего вы его определяете. Может на основании какого-то общего тега, может на основании корневого тега, я ж не провидец. Но как бы там ни было - к Spring и к Spring MVC это не имеет никакого отношения. Это вопрос к обработки XML - читайте про DOM, SAX, StAX, XPATH, XSLT.
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603098
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksaimer,

SomeType - перечислимый тип = все ваши ПОДформаты XML
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603099
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ты ж сам немногословныйне так крепко как ты )
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603101
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SomeType - перечислимый тип = все ваши ПОДформаты XMLС точки зрения расширяемости - плохое решение.
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603116
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF
svenomPetro123SomeType - перечислимый тип = все ваши ПОДформаты XMLС точки зрения расширяемости - плохое решение.
я не сомневался. У тебя хорошие кроме твоего бывают?
Флеймисты - топик не мой, а автора
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603129
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123я не сомневался. У тебя хорошие кроме твоего бывают?Нет
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603408
maksaimer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все таки вопрос был про то, как мне узнать какой xml пришел, вопрос про методы, я в курсе что валидацию можно делать по xsd схеме, как еще?
Нужно оптимальное решение, простотат реалицации и быстрота выполнения :) как-то так :)
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603412
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksaimer,
убери лишние запятые.
Если я правильно понял, то валидацию ЕЩЁ можно делать руками - парся файл XML и проверяя соответствие его нодов.
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603417
maksaimer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините что без запятых.
Этот подход я тоже знаю :) тут Можно использовать SAX(или StAX).
На мой взгляд это будет самый быстрый способ.
Есть еще?
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603424
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksaimer,
Простота по вашему ТЗ противоречит Быстроте.
Например, SAX парсеры сложнее и Непроще, но они быстрее т.к. работают потоково.
Поэтому, чем больше напишите о Задаче, тем точнее диагноз.

PS
3 способ - договориться с поставщиком о формате и невалидировать (сменить расширение файла)
= самый простой в кавычках.
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603455
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksaimerКак мне лучше всего определять какой xml пришел, лучше всего было бы сделать на уровне spring'a, чтобы по виду xml срабатывал тот или иной контроллер?

может кто сталкивался.
Мы аналогичную проблему решили посадив разные XML-ки на разные URL'ы. Т.е. я всегда четко знаю, что по адресу /action1 приходит XML-ка для action1.

Это, конечно, если ТЗ позволяет.
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603461
maksaimer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonidv,

Вы правы, но заказчик не хочет разные URL'ы... вопроса бы не было :)
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603536
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksaimerLeonidv,

Вы правы, но заказчик не хочет разные URL'ы... вопроса бы не было :)а если в корень всех XML внедрить элемент описывающий какой "тип" пришел?

вычитали тип - закинули в обработчик. обработчик проверяет по XSD и отрабатывает запрос.

можно, конечно, проверять по XSD, но тогда потребуется весь документ валидировать.
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37603554
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDA,
ну это то же что и расширение \ Url сменить.
Хотя более скрыто от грозного начальника. Можно валидатор-подписатор на его слое при отправке запустить.
Опять - на поклон к заказчику :)
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37605027
maksaimer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, все таки уговорили изменить в сторону URL'ов :)
...
Рейтинг: 0 / 0
Узнать какой xml пришел.
    #37605030
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksaimerВсем спасибо, все таки уговорили изменить в сторону URL'ов :)тебя или заказчика? :)
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Узнать какой xml пришел.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]