2011-08-09 49 views
1

在我看來,Java XStream庫不支持交叉授權。我在這個信念中糾正了嗎?XStream不支持自定義轉換器交叉授權?

所以,我可以解釋我的意思,請看下面的例子:

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

比方說,我們有一個「節點型-X」節點和另一轉換器「節點Y型轉換器「節點。我看到XStream的功能將是sometype。這時候委託()的方法,該方法我可以在節點型-X轉換器內調用將確定嵌套節點型-Y節點和委派解組的轉換器,用於這樣的節點並返回結果,以便節點類型x轉換器可以根據需要處理結果。就目前而言,XStream似乎要求「node-type-x」的轉換器處理這些節點的所有子節點。

回答

2

兩個簡單的方法可以做到這一點:

  1. Register your node-type-y converter與XStream的實例,您的節點型-X轉換器內部,調用marshallingContext.convertAnother(object)
  2. 請勿將您的轉換器註冊到XStream實例,並且在您的node-type-x轉換器中,請致電marshallingContext.convertAnother(object, converter),將您希望使用的轉換器傳遞給您通過它的「y」。
+0

是的,我現在明白了convertAnother()肯定是這裏的關鍵。我最初的期望是convertAnother()應該從轉換中返回結果,以便父代可以重新彙編遞歸調用的結果,但是現在我明白了這個重新組裝是通過共享編寫器實現的。不知道,如果這就是我自己設計它,但嘿...現在我可以做我需要的東西!謝謝 :-) –