В моем понимании Вы не будете в состоянии обработать плоскость List
через JAXB, поскольку JAXB понятия не имеет, как преобразовать это в XML.
Вместо этого необходимо будет определить тип JAXB, который содержит List<RelationCanonical>
(я назову его Type1
), и другой для содержания списка тех типов, в свою очередь (поскольку Вы имеете дело с List<List<...>>
; я назову этот тип Type2
).
результатом мог тогда быть XML ouput как это:
<Type2 ...>
<Type1 ...>
<RelationCanonical ...> ... </RelationCanonical>
<RelationCanonical ...> ... </RelationCanonical>
...
</Type1>
<Type1>
<RelationCanonical ...> ... </RelationCanonical>
<RelationCanonical ...> ... </RelationCanonical>
...
</Type1>
...
</Type2>
Без двух включающих JAXB-аннотируемых типов, процессор JAXB понятия не имеет, какую разметку генерировать, и таким образом приводит к сбою.
- Редактирование:
то, Что я имею в виду, должно несколько походить на это:
@XmlType
public class Type1{
private List<RelationCanonical> relations;
@XmlElement
public List<RelationCanonical> getRelations(){
return this.relations;
}
public void setRelations(List<RelationCanonical> relations){
this.relations = relations;
}
}
и
@XmlRootElement
public class Type2{
private List<Type1> type1s;
@XmlElement
public List<Type1> getType1s(){
return this.type1s;
}
public void setType1s(List<Type1> type1s){
this.type1s= type1s;
}
}
необходимо также проверить раздел JAXB в учебном руководстве J5EE и Неофициальное Руководство JAXB .
Если это соответствует вашим целям, вы всегда можете определить такой массив:
YourType[]
JAXB определенно может определить, что это такое, и вы сможете сразу же использовать его на стороне клиента. Я бы также порекомендовал вам сделать это таким образом, поскольку вы не должны иметь возможность изменять массив, полученный с сервера через список, а через методы, предоставляемые веб-службой