【发布时间】:2015-07-28 07:56:07
【问题描述】:
我对“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 使用? (
【问题讨论】:
标签: xstream