我有一个主要课程:
@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
。