2014-09-25 2 views
1

Я использую XStream для сопоставления XML с соответствующим POJO. Моя XML-структура нижеСопоставление XML с POJO с помощью xstream

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

Таким образом, существует несколько TagABC. Я определил TagABC в моем POJO, как

private List<TagABCHolder> TagABC; 

где TagABCHolder еще один POJO, который просто содержит х, у и их поглотитель, сеттер

Теперь, когда я пытаюсь сделать отображение с помощью 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 

Любая идея, как я могу это решить?

ответ

1

У меня есть решение.

Это всего лишь трюк с аннотациями.

Вот что я сделал:

Я добавил @XStreamImplicit аннотаций в POJO (TagABCHolder)

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

и просто обработал аннотаций, размещенных в POJO из кода, где я отображающие

xstream.processAnnotations(TagABCHolder.class); 

Вот и все !!!