2014-09-25 82 views
1

我正在使用XStream将XML映射到相应的POJO。我的XML结构如下使用xstream将XML映射到POJO

<myTag> 
<TagABC> 
    <x> ... </x> 
    <y> ... </y> 
</TagABC> 
    . 
    . 
    . 
<TagABC> 
    <x> ... </x> 
    <y> ... </y> 
</TagABC> 
</myTag> 

所以有多个TagABC。我在我的POJO定义TagABC为

private List<TagABCHolder> TagABC; 

其中TagABCHolder是另一个POJO,仅仅包含X,Y和他们的getter,setter方法

现在,当我尝试做使用XStream的下面

代码映射
xstream.alias("TagABC", TagABCHolder.class); 

xstream.fromXML(xml); 

这并不承认POJO定义TagABC链表结构,并抛出以下

---- 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 
012错误

任何想法如何解决这个问题?

回答

1

我得到了解决方案。

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

这里就是我所做的:

我加的POJO(TagABCHolder)@XStreamImplicit注释

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

和公正的处理放在从代码中POJO中的注释我在那里绘制

xstream.processAnnotations(TagABCHolder.class); 

就是这样!