XML と Java オブジェクトの間でマーシャリング/アンマーシャリングを実行するために、Castor から 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
。果物は 3つfruitList
あるはずです。オレンジ 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>();
}
フルーツクラス
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
ですか?
どうもありがとう!