2011-08-09 10 views
1

Java XStreamライブラリはクロス・デリゲーションをサポートしていないようです。私はこの信念で正しいですか?XStreamはカスタムコンバータのクロス委任をサポートしていませんか?

だから、私は私が何を意味するか説明することができ、次の例を考えてみます。

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

のは、私たちは「ノード型-X」ノードと「ノード型-Yのための別のコンバータのためのコンバータを持っているとしましょうノード。私はのようにをXStreamで見ると、ノードタイプ-xコンバータ内で呼び出すことができるdelegate()メソッドがあります。このメソッドは、ネストされたノードタイプ-yノードを識別し、コンバータのアンマーシャリングを委譲します。ノード型x変換器が結果を必要に応じて処理できるように結果を返す。 XStreamは、 "node-type-x"のコンバーターがそのようなノードのすべての子の処理を処理することを要求しているようです。これを行うには

答えて

2

つの簡単な方法:

  1. XStreamのインスタンスとRegister your node-type-y converter、そしてあなたのノード型-Xコンバータ内部に、marshallingContext.convertAnother(object)を呼び出します。
  2. コンバータをXStreamインスタンスに登録せず、ノードタイプ-xコンバータの内部で、marshallingContext.convertAnother(object, converter)を呼び出し、渡した "y"に使用するコンバータを渡します。
+0

はい、ここではconvertAnother()がキーとなることは間違いありません。私の元来の期待はconvertAnother()がコンバートの結果を返すようにして、親が再帰呼び出しの結果を再アセンブルできるようにすることでしたが、この再アセンブリは共有ライターによって実現されました。確かに、もしそれが私がそれを自分で設計したのであれば、ちょっとね...今、私は必要なことをすることができます!ありがとう:-) –

関連する問題