I have the following xml types:
<xsd:element name="FaxNumbers" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="FaxNumber" type="FaxNumber" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element>
The FaxNumber type is as follows:
<xsd:simpleType name="FaxNumber"> <xsd:restriction base="xsd:string"> <xsd:minLength value="1" /> </xsd:restriction> </xsd:simpleType>
The resulting xml should look something like this:
<FaxNumbers> <FaxNumber>3878374</FaxNumber> <FaxNumber>387833434</FaxNumber> <FaxNumber>3878334</FaxNumber> </FaxNumbers>
When running JAXB XJC to generate Java classes from XSD, it generates the following class:
@XmlType(name = "FaxNumbers") public class FaxNumbers { @XmlElement(name = "FaxNumber", required = true) protected List<String> faxNumber = new ArrayList<String>(); }
However, I would like to bind FaxNumber to a composite class as follows:
@XmlType(name = "FaxNumbers") public class FaxNumbers { @XmlElement(name = "FaxNumber", required = true) protected List<FaxNumber> faxNumber = new ArrayList<String>(); } Where FaxNumber class looks like this: public class FaxNumber{ @XmlValue private String value; }
Is there any way to define such binding in JAXB xml bindings?
Note. Unfortunately, I have no control and can not change the XSD
java jaxb xjc
Adrian mitev
source share