我在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使用? (
答案 0 :(得分:1)
我也有类似的问题。通过为每个类创建新的xstream实例然后处理注释来解决问题。