有没有办法在两个不同的类中使用相同的别名在xstream中设置为别名

时间:2015-07-28 07:56:07

标签: xstream

我在StackExchange'上很新,所以请原谅我的查询是否提前或不特别清楚。

我使用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 个答案:

答案 0 :(得分:1)

我也有类似的问题。通过为每个类创建新的xstream实例然后处理注释来解决问题。