2009-04-22 14 views
3

Ich möchte eine Liste verschiedener Arten von Klasse erstellen, die alle Vererbung aus der gleichen SuperClass sind.
Ich beginne von einer Xsd-Datei und ich möchte die Java-Klassen erstellen und in Laufzeit Xml-Datei laden, die eine Liste Knoten hat.
Mein Problem ist die Definition der xsd, die die Java-Klassen erstellen wird.Java JAXB und Vererbung

Ich benutze JAXB 2.0 Eclipse-Plugin.

Am Ende möchte ich eine haben List<superClass>.
Kann ich es mit einem einfachen JAXB tun?

Antwort

11

Ich verstehe nicht, warum Sie mit dem xsd beginnen möchten, wenn Sie es nicht schon haben. Wenn Sie über das Schema frei sind, würde es mit dem Java-Code beginnen und das XSD von dort generieren.

Sie können eine Liste mit Anmerkungen versehen, wie folgt:

@XmlElements({ 
    @XmlElement(name = "child1", type = Child1.class), 
    @XmlElement(name = "child2", type = Child2.class), 
    @XmlElement(name = "child3", type = Child3.class)}) 
private final List<IChild> children = new ArrayList<IChild>(); 

Wo IChild die Schnittstelle für Subklassen von superClass ist. Dadurch wird ein XSD-Schema generiert, wie Sie es auf der gewünschten Seite beschrieben haben.

+1

Eventuell kombinieren mit: @XmlElementWrapper (name = "children") –