我正在從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