JAXB
The Java Architecture for XML Binding, or JAXB for short, is a framework for mapping XML content to and from Java objects. Mapping is performed in accordance to annotations specified on the relevant Java class. These annotations are either written by hand or alternatively generated from a schema file. Since a custom marshaling engine is created from the annotations, schema parsing is not necessary. Also, the generated engine is reused across multiple requests, which makes it ideal for web services. For these reasons, JAX-WS uses JAXB for all complex type processing.
Following the schema first methodology, we can construct a simple address type:
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetName
space="http://titan.com/custom">
<xs:complexType name="address">
<xs:sequence>
<xs:element name="street" type="xs:string" minOccurs="0"/>
<xs:element name="city" type="xs:string" minOccurs="0"/>
<xs:element name="zip" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>This can then be passed to the JAXB xjc tool to generate a Java object that represents this custom type:
$xjc address.xsd parsing a schema... compiling a schema... com/titan/custom/Address.java com/titan/custom/ObjectFactory.java com/titan/custom/package-info.java
The resulting Address type looks
like a standard JavaBean:
@XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "address", propOrder = {"street","city","zip"}) public class Address { protected String street; ...