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

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

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

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

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

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

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

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

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

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

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

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


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