Hallo,
ich kämpf seit ein paar Tage mit Schema Dateien mit deren Hilfe ich Java Objekte erstellen möchte. Diese XSD sind hier zu finden http://www.osci.de/xmeld211/
Die Jaxb Klassen liesen sich ohne Probleme mit dem Maven Plugin generieren.
Nun mein Problem:
Es werden auch abstrakte Klassen erzeugt. Wenn ich nun konkrete XML Nachrichten unmarshaln möchte bekommen ich eine "javax.xml.bind.UnmarshalException: Unable to create an instance" da JAXB versucht eine Abstrakte Klasse zu instantiieren.
Hier ein wenig Code der mir Kopfzerbrechen bereitet:
Bis hier her ist alles Toll, die Klassen werden einfach abgeleitet.
In der folgenden Klassen wird nun "protected NachrichtenkopfG2G nachrichtenkopf" verwendet.
NachrichtenkopfG2G ist ebenfalls abstract!
Wie sage ich nun bei der Generierung der Klassen, das bei der Instantiierung TypeNachrichtenkopfG2G oder NachrichtenkopfG2GXInneres verwendet werden muss.
Ich habe an "CustomBindung" oder irgend einen Adapter gedacht. Weiß aber nicht wie ich da anfange. :-(
Ich hoffe irgend jemand kann mir einen Tip geben.
ich kämpf seit ein paar Tage mit Schema Dateien mit deren Hilfe ich Java Objekte erstellen möchte. Diese XSD sind hier zu finden http://www.osci.de/xmeld211/
Die Jaxb Klassen liesen sich ohne Probleme mit dem Maven Plugin generieren.
Code:
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.0</version>
Es werden auch abstrakte Klassen erzeugt. Wenn ich nun konkrete XML Nachrichten unmarshaln möchte bekommen ich eine "javax.xml.bind.UnmarshalException: Unable to create an instance" da JAXB versucht eine Abstrakte Klasse zu instantiieren.
Hier ein wenig Code der mir Kopfzerbrechen bereitet:
Java:
@XmlRootElement(name = "xmeldit.datenlieferung.1100")
public class XmelditDatenlieferung1100
extends TypeNachrichtG2G
implements Serializable, ToString2
Java:
public class TypeNachrichtG2G
extends NachrichtG2G
implements Serializable, ToString2
In der folgenden Klassen wird nun "protected NachrichtenkopfG2G nachrichtenkopf" verwendet.
Java:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Nachricht.G2G", propOrder = {
"nachrichtenkopf"
})
@XmlSeeAlso({
NachrichtG2GRueckweisung.class,
TypeNachrichtG2G.class
})
public abstract class NachrichtG2G implements Serializable, ToString2
{
private final static long serialVersionUID = 5000000L;
@XmlElement(required = true)
protected NachrichtenkopfG2G nachrichtenkopf;
Java:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Nachrichtenkopf.G2G", propOrder = {
"identifikationNachricht",
"leser",
"autor"
})
@XmlSeeAlso({
TypeNachrichtenkopfG2G.class,
NachrichtenkopfG2GXInneres.class
})
public abstract class NachrichtenkopfG2G implements Serializable, ToString2
Wie sage ich nun bei der Generierung der Klassen, das bei der Instantiierung TypeNachrichtenkopfG2G oder NachrichtenkopfG2GXInneres verwendet werden muss.
Ich habe an "CustomBindung" oder irgend einen Adapter gedacht. Weiß aber nicht wie ich da anfange. :-(
Ich hoffe irgend jemand kann mir einen Tip geben.