2015-07-28 50 views
1

我對'StackExchange'很陌生,所以如果我的查詢問得較早或不是特別清楚,請原諒。有沒有辦法在xstream中爲兩個不同的類使用相同的別名來設置別名

我正在使用XStream類將響應XML解析爲JAVA對象(使用fromXML()方法)。我創建了實用工具類(例如XStreamUtil - 單例類),並使用諸如「XSTREAM.alias(」NewDataSet「,Transactional.class);」等語句在其中配置了不同的模型類。

現在的問題是 - 我從具有相同父節點(例如)的第三方獲取XML作爲不同API的響應。所以,如果我使用下面的代碼 -

XSTREAM.alias(「NewDataSet」,Transactional.class); XSTREAM.alias(「NewDataSet」,Open.class);其中,

XSTREAM.alias(「NewDataSet」,Details.class); XStream無法解析前兩個類(Transactional & Open)的響應,並試圖通過'Details.class'(配置的最後一個)解析它。這引發異常像下面 -

brilliance.model.report.notify.Details.Transactional 
---- Debugging information ---- 
field    : Transactional 
class    : com.brilliance.model.report.notify.Details 
required-type  : com.brilliance.model.report.notify.Details 
converter-type  :  com.thoughtworks.xstream.converters.reflection.ReflectionConverter 
path    : /NewDataSet/Transactional 
version    : 1.4.7 

    com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$Un knownFieldException: No such field  com.brilliance.model.report.notify.Details.Transactional 
---- Debugging information ---- 
field    : Transactional 
class    : com.brilliance.model.report.notify.Details 
required-type  : com.brilliance.model.report.notify.Details 
converter-type  :  com.thoughtworks.xstream.converters.reflection.ReflectionConverter 
path    : /NewDataSet/Transactional 
version    : 1.4.7 

at  com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.handleUnknownField(AbstractReflectionConverter.java:495) 
at  com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.do Unmarshal(AbstractReflectionConverter.java:351) 

.. .. ..

我在這裏的問題是 - 我們是否有一種方法來定義相同的別名爲兩個不同的Java類,通過XStream的是使用? (

回答

1

我也有類似的問題。通過爲每個類創建新的xstream實例並處理註釋來解決問題。

相關問題