我是'StackExchange‘的新手,所以如果我的问题之前问过或者不是特别清楚,请原谅。
我使用XStream类将响应XML解析为JAVA object (使用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无法解析前两个类(事务类和开放类)的响应,并尝试通过'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)
。。。。。。
我这里的问题是-我们有没有办法通过XStream为两个不同的java类定义相同的别名?
发布于 2015-08-29 00:41:19
我也有类似的问题。已通过为每个类创建新的xstream实例并处理注释解决此问题。
https://stackoverflow.com/questions/31670475
复制相似问题