我正在从Castor切换到JAXB2以在XML和Java对象之间执行封送/解组。我在尝试配置多态对象集合时遇到了问题。将多态对象的集合配置为在JAXB2中工作
示例XML
<project name="test project">
<orange name="fruit orange" orangeKey="100" />
<apple name="fruit apple" appleKey="200" />
<orange name="fruit orange again" orangeKey="500" />
</project>
工程类
的oranges
表工作正常,我看到列表中的2个橘子。但是,我不知道如何配置fruitList
。 fruitList
应该有3个水果:2个橙子和1个苹果。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Project {
@XmlAttribute
private String name;
@XmlElement(name = "orange")
private List<Orange> oranges = new ArrayList<Orange>();
// Not sure how to configure this... help!
private List<Fruit> fruitList = new ArrayList<Fruit>();
}
水果类
果是一个抽象类。出于某种原因,将这个类定义为抽象似乎导致了很多问题。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Fruit {
@XmlAttribute
private String name;
}
橙类
public class Orange extends Fruit {
@XmlAttribute
private String orangeKey;
}
苹果类
public class Apple extends Fruit {
@XmlAttribute
private String appleKey;
}
如何将我的fruitList
在Project
配置达到我想要的吗?
非常感谢!
我尝试了您的方法...我注释了`fruitList` `@ XmlElementRef`属性和'@ XmlRootElement`注释`Orange`和`Apple`类。我运行了代码,`fruitList`空了。我在这里做错了什么?谢谢。 – limc 2011-02-03 16:53:15