是否可以为集合成员定义自定义JAXB编组适配器?

时间:2011-11-04 14:46:21

标签: java jaxb jaxb2

我有一个主要课程:

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Foo {
  @XmlAnyElement
  public Collection<Object> items;
}

现在我在运行时向这个items集合添加一个新元素:

@XmlJavaTypeAdapter(ItemAdapter.class)
public class Item {
}

我期待在marshal(Item)的编组过程中调用ItemAdapter中的Foo

public class ItemAdapter extends XmlAdapter<String, Item> {
  @Override
  public String marshal(final Item item) {
    return "hello";
  }
}

但是这个调用没有发生,而是我得到了这个例外:

[com.sun.istack.SAXException2: unable to marshal type "Item" as 
an element because it is missing an @XmlRootElement annotation]

我做错了什么?请注意,Foo.items可能包含其他类型的元素,而不仅仅是Item

0 个答案:

没有答案