0

従来の (残念な) 理由により、2 つの異なる表現に対して同じ xml ルートがあります。xstream では、アンマーシャリング中に必要なクラスをアンマーシャラーに使用させるにはどうすればよいでしょうか。

xstreamがその情報を使用してアンマーシャリング中に適切なクラスを選択できるように、(ThreadContextを介して)何らかのコンテキストを渡すことを考えていますが、どこから始めればよいかわかりません。どんな提案でも大歓迎です。

ノート:

  • ルートタグは両方の XML で同じです
  • 2 つの表現を区別するために利用できるルート タグに関するその他の情報 (属性) はありません
  • 従来の理由により、xml を変更できません

理想的には、ソリューションが Spring-OXM で動作することを望みますが、必要に応じてショートカットを使用します

4

1 に答える 1

0

2 つの表現のどちらを解析しようとしているのかを事前に知っています。

したがって、最初に xStream の 2 つのインスタンスを作成し、コンバーターとエイリアスをそれぞれに異なる方法で構成し、表現ごとに 1 つのインスタンスを使用できます。

このアプローチは、グローバル コンテキスト変数を設定してから、コンバーター内に多数のifを設定し、潜在的なあいまいさに対処するよりも、クリーンで制御しやすいように思えます。

于 2015-12-19T22:16:59.913 に答える