Guten Morgen Zusammen,
beschäftige mich gerade ein klein wenig mit JAXB.
JAXB biete ja die Möglichkeit aus einer XSD Klassen zu generrieren, hierbei bildet er, soweit ich das verstanden habe, alle complexen Typen als eigene Klasse ab. Das Vorgehen ist ja ansicht erst einma nachvollziehbar, jetzt habe ich aber eine XSD mit sehr vielen complexen Types, die ich gerne in einer flacheren Klassenstruktur abbilen will. Gibt es hier eine Möglichkeit dem Generrierungsmechnismus entsprechende Vorgaben zu machen? Oder welche Möglichkeiten habe ich die Klassen selber zu schreiben, also welche Annotations/Deklarationen muss ich vornehmen um einen komplexen Eintrag zu addressieren um ihn flach abzubilden?
Hier mal ein kleines konstruiertes Beispiel:
Daraus generriert mir JAXB 2 Klassen: Shiporder und Shipto.
Jetzt würde ich gerne eine flachere Hierarchie anstreben.
So sieht die Shipoder Klasse aus:
dann habe ich versucht das ganze per Hand zu edtieren:
was natürlich in der Form leider nicht geht, da er beim parsen der XML Datei die Elemente nicht füllt, da er die Felder ja im Root-Element erwartet und ich nirgendwo eine Stelle gefunden habe in der ich selber das Elemente "adressieren" kann.
Jemand eine Idee wie man JAXB dazu überreden kann (ob nun bei der Generrierung oder per Hand anpassung der Klassen) complexe Typen flach ab zu bilden?
Grüße
Dominik
beschäftige mich gerade ein klein wenig mit JAXB.
JAXB biete ja die Möglichkeit aus einer XSD Klassen zu generrieren, hierbei bildet er, soweit ich das verstanden habe, alle complexen Typen als eigene Klasse ab. Das Vorgehen ist ja ansicht erst einma nachvollziehbar, jetzt habe ich aber eine XSD mit sehr vielen complexen Types, die ich gerne in einer flacheren Klassenstruktur abbilen will. Gibt es hier eine Möglichkeit dem Generrierungsmechnismus entsprechende Vorgaben zu machen? Oder welche Möglichkeiten habe ich die Klassen selber zu schreiben, also welche Annotations/Deklarationen muss ich vornehmen um einen komplexen Eintrag zu addressieren um ihn flach abzubilden?
Hier mal ein kleines konstruiertes Beispiel:
XML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="cityName" type="xs:string"/>
<xs:element name="cityPLZ" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Daraus generriert mir JAXB 2 Klassen: Shiporder und Shipto.
Jetzt würde ich gerne eine flachere Hierarchie anstreben.
So sieht die Shipoder Klasse aus:
Java:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"orderperson",
"shipto"
})
@XmlRootElement(name = "shiporder")
public class Shiporder {
@XmlElement(required = true)
protected String orderperson;
@XmlElement(required = true)
protected Shiporder.Shipto shipto;
dann habe ich versucht das ganze per Hand zu edtieren:
Java:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"orderperson",
"cityName",
"cityPLZ"
})
@XmlRootElement(name = "shiporder")
public class Shiporder {
@XmlElement(required = true)
protected String orderperson;
@XmlElement(required = true)
protected String cityName;
@XmlElement(required = true)
protected String cityPLZ;
Jemand eine Idee wie man JAXB dazu überreden kann (ob nun bei der Generrierung oder per Hand anpassung der Klassen) complexe Typen flach ab zu bilden?
Grüße
Dominik
Zuletzt bearbeitet von einem Moderator: