我使用XStream将XML映射到相应的POJO。我的XML结构如下
<myTag>
<TagABC>
<x> ... </x>
<y> ... </y>
</TagABC>
.
.
.
<TagABC>
<x> ... </x>
<y> ... </y>
</TagABC>
</myTag>
所以有多个TagABC。我在我的POJO中定义了TagABC
private List<TagABCHolder> TagABC;
其中TagABCHolder是另一个只包含x,y及其getter,setter的POJO
现在,当我尝试使用XStream进行映射时,使用下面的代码
xstream.alias("TagABC", TagABCHolder.class);
xstream.fromXML(xml);
这不识别POJO中为TagABC定义的List结构,并抛出错误
---- Debugging information ----
message : x: x
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : x: x
class : com.a.b.c.testing.common.TagABCHolder
required-type : java.util.ArrayList
path : /myTag/TagABC/x
line number : 1
我知道如何解决这个问题?
答案 0 :(得分:1)
我得到了解决方案。
这只是一个带注释的技巧。
这就是我的所作所为:
我在POJO(TagABCHolder)中添加了@XStreamImplicit注释
@XStreamImplicit(itemFieldName="TagABC")
private List<TagABCHolder> TagABC;
刚刚处理了我正在映射的代码中放置在POJO中的注释
xstream.processAnnotations(TagABCHolder.class);
就是这样!!!