2015-10-28 14 views
0

Из-за наследственных (неудачных) причин у нас есть те же корни xml для двух разных представлений. С помощью xstream, как бы мы могли позволить unmarshaller использовать класс, который нам нужен, пока он не разбирается.xstream условно unmarshall для класса

Я думаю о передаче некоторого контекста (через ThreadContext), чтобы xstream использовал эту информацию, чтобы выбрать правильный класс во время unmarshalling, хотя я не уверен, с чего начать. Любые предложения очень ценятся.

Примечание:

  • корневых теги одинаковы для XML
  • Никакой другой информации (атрибута) на корневом теге доступно для distingish 2 представления
  • Невозможно изменить XML из-за унаследованные причины

В идеале, мне бы хотелось, чтобы решение работало с Spring-OXM, но при необходимости получится ярлык

ответ

0

Вы заранее знаете, какое из двух представлений вы собираетесь разбирать.

Таким образом, вы можете создать два экземпляра xStream в начале и настроить разные конвертеры и псевдонимы для каждого из них и использовать один экземпляр для каждого представления.

Этот подход кажется мне более чистым и более управляемым, чем установка глобальной переменной контекста, а затем с букетом , если s внутри конвертеров и имеет дело с потенциальными неоднозначностями.