Thanks for your answers!
Indeed, writing my own XSD is not an option because I am not the owner of the XSD and its size is really big.
It seems that the Code Injection Plugin requires changes in the XSD itself. And I cannot change it. However, a solution could be to create my own JAXB Plugin dedicated to my “business”. I will search more information about JAXB Plugin possibilities (for unmarshalling and marshalling) .
Jeremy
From: Wolfgang Laun [mailto:wolfgang.laun_at_gmail.com]
Sent: Tuesday, January 26, 2010 7:41 PM
To: users_at_jaxb.dev.java.net
Subject: Re: Flattenning complex XSD structure during Java classes generation
One solution would be to use the code injection plugin, to add additional
getters and setters to class B for C's fields FieldC1 and FieldC2.
See
http://weblogs.java.net/blog/kohsuke/archive/2005/06/writing_a_plugi.html or post again, if this isn't clear enough.
An XSL transformation would work, too, but it's not always possible or convenient to add an XSL processing step.
-W
On Tue, Jan 26, 2010 at 6:27 PM, Jeremy JGR. Grumbach <JGR_at_pulsar.be<mailto:JGR_at_pulsar.be>> wrote:
Hi all,
I would like to know if it is possible (maybe by using JAXB customizations) to simplify/flatten the generated Java classes structure. The reason is that my XSD is quite complex with a lot of levels which are really annoying for my Java application (and I *cannot* change the XSD).
In the example below, I would like to merge the fields of classes B and C in a single "BC" class.
Example:
Here is an XSD:
-------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="
http://www.w3.org/2001/XMLSchema">
<xs:element name="B" type="BType"/>
<xs:complexType name="BType">
<xs:sequence>
<xs:element name="C" type="CType"/>
<xs:element name="FieldB1" type="xs:string"/>
</xs:sequence>
</xs:complexType>●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
<xs:complexType name="CType">
<xs:sequence>
<xs:element name="FieldC1" type="xs:string"/>
<xs:element name="FieldC2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
-------------------------------------------------
JAXB generation results in the following two classes: BType.java and CType.java
-------------------------------------------------
public class BType {
protected CType c;
protected String fieldB1;
[...]
}
public class CType {
protected String fieldC1;
protected String fieldC2;
[...]
}
-------------------------------------------------
And I would like to merge these two classes to have something like that
-------------------------------------------------
public class BCType {
protected String fieldB1;
protected String fieldC1;
protected String fieldC2;}
-------------------------------------------------
Thanks!
Jeremy
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net<mailto:users-unsubscribe_at_jaxb.dev.java.net>
For additional commands, e-mail: users-help_at_jaxb.dev.java.net<mailto:users-help_at_jaxb.dev.java.net>