使用xstream将XML映射到POJO

时间:2014-09-25 16:44:58

标签: java xml xstream

我使用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

我知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我得到了解决方案。

这只是一个带注释的技巧。

这就是我的所作所为:

我在POJO(TagABCHolder)中添加了@XStreamImplicit注释

@XStreamImplicit(itemFieldName="TagABC")
private List<TagABCHolder> TagABC;

刚刚处理了我正在映射的代码中放置在POJO中的注释

xstream.processAnnotations(TagABCHolder.class);

就是这样!!!