# JAXB und abstrakte Klasse(n)



## snoop120380 (13. Jan 2010)

Hallo, 
ich sitze seit einigen Stunden an folgendem Problem:

Ich habe eine abstrakte Klasse "Location"


```
@XmlTransient
public abstract class StoreLocation implements IStoreLocation
{	
   @XmlElement(name="base-uri", nillable=true, required=false)
   private String _baseUri = null;
}
```

Das Interface ist ebenfalls als XmlTransient annotiert.

Nun habe ich mehrere Klassen, die von Location erben. Eine davon ist wiederum abstrakt und mit @XmlTransient annotiert.
Mein Wunschergebnis ist nun, dass ich in der XML Datei folgendes schreiben kann:


```
...
<location xsi:type="meineSpezielleLocation">
   ...Elemente der speziellenLocation
</location>
```

JAXB sollte dann idealerweise anhand des xsi:type die entsprechende Klasse instanziieren und die Elemente den Feldern zumappen.
Leider klappt das nicht so, wie gewollt, denn entweder meckert er, weil er Location nicht instantiieren kann (logisch, weil abstrakt) oder, nachdem ich es eben als @XmlTransient annotiert hatte, bietet er mir unter xsi:type nur anyType an, und damit eben keine entsprechenden Elemente. Das muss doch aber eigentlich möglich sein, oder???

Meine Frage lautet nun, ob ich das Gebilde aus Klassen anders annotieren muss, oder ob mein Vorhaben nicht möglich ist???


----------



## Noctarius (13. Jan 2010)

Vielleicht hilft dir das weiter: Java Architecture for XML Binding (JAXB)

Stichwort javaType


----------



## snoop120380 (13. Jan 2010)

Noctarius hat gesagt.:


> Vielleicht hilft dir das weiter: Java Architecture for XML Binding (JAXB)
> 
> Stichwort javaType



Wenn ich das richtig verstehe, geht es hierbei um Annotierungen im Schema selbst. Ich möchte ja die JAVA Klassen annotieren, und dann daraus mit schemagen ein Schema generieren. Hätte ich vllt. dazu schreiben soll.


----------



## Noctarius (13. Jan 2010)

Nein nicht im Schema, sondern im XML Source später. Dazu kannst du dann passend einen XmlAdapter baeun.


----------



## snoop120380 (13. Jan 2010)

Problem ist gelöst. Der Fehler lag darin, dass ich beim Erstellen des JAXBContext nicht alle benötigten Klassen angegeben habe. Die konnte er anscheinend nicht von selbst korrekt auflösen.
Danke trotzdem für die Hilfe!!!


----------

