2015-07-28 55 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实例并处理注释来解决问题。

相关问题