XStream не поддерживает пользовательское преобразование перекрестного делегирования? - PullRequest
1 голос
/ 09 августа 2011

Мне кажется, что библиотека Java XStream не поддерживает перекрестное делегирование.Правильно ли я верю в это убеждение?

Итак, я могу объяснить, что я имею в виду, рассмотрим следующий пример:

<node-type-x>
  <node-type-y>
     <a/>
     <b/>
  </node-type-y>
<node-type-y>
  <c/>
  <d/>

Допустим, у нас есть преобразователь для "node-type-x"узлы и другой конвертер для узлов типа "узел-у".Функциональность, которую я хотел бы , чтобы увидеть в XStream, была бы некоторого типа делегата () метода, который я мог бы вызвать в конвертере типа узла x, который определил бы вложенный тип узла типа yузлы и делегируют демаршаллинг преобразователю для таких узлов и возвращают результат, чтобы преобразователь типа узла x мог обработать результат по мере необходимости.В нынешнем виде XStream, похоже, требует, чтобы преобразователь для "node-type-x" обрабатывал все дочерние элементы таких узлов.

1 Ответ

2 голосов
/ 09 августа 2011

Два простых способа сделать это:

  1. Зарегистрируйте ваш конвертер типа узла y с экземпляром XStream, а внутри конвертера типа узла x вызовите marshallingContext.convertAnother (object) .
  2. Не регистрируйте конвертер в экземпляре XStream, и внутри конвертера node-type-x вызовите marshallingContext.convertAnother (object, converter) , передав ему конвертер, который вы хотели бы использовать для "у", что вы его прошли.
...