<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mtitek.jaxb.bindings</groupId> <artifactId>mtitek-jaxb-bindings</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <build> <plugins> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.14.0</version> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <args> <arg>-Xsetters</arg> </args> <plugins> <plugin> <groupId>org.jvnet.jaxb2_commons</groupId> <artifactId>jaxb2-basics</artifactId> <version>1.11.1</version> </plugin> </plugins> </configuration> </plugin> </plugins> </build> </project>
<?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://bindings.jaxb.mtitek/payload" xmlns="http://bindings.jaxb.mtitek/payload" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"> <xs:element name="payload"> <xs:complexType> <xs:sequence> <xs:element name="id" type="xs:string" /> <xs:element name="code" type="xs:string" /> <xs:element name="parameters" type="payloadParameters" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="payloadParameters"> <xs:sequence> <xs:element name="parameter" type="payloadParameter" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="payloadParameter"> <xs:all> <xs:element name="name" type="xs:string" /> <xs:element name="value" type="xs:string" /> </xs:all> <xs:attribute name="id" type="xs:string" /> </xs:complexType> </xs:schema>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <payload xmlns="http://bindings.jaxb.mtitek/payload" xmlns:ns1="http://bindings.jaxb.mtitek/payload/data" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://bindings.jaxb.mtitek/payload payload.xsd http://bindings.jaxb.mtitek/payload/data payloadData.xsd"> <id>123</id> <code>xyz</code> <parameters> <parameter id="11"> <name>bar</name> <value>foo</value> </parameter> <parameter id="22"> <value>ti</value> <name>ta</name> </parameter> </parameters> </payload>
package mtitek.jaxb.bindings.payload; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = "payload") @XmlType(name = "payload", propOrder = { "id", "code", "parameters" }) @XmlAccessorType(XmlAccessType.FIELD) public class Payload { @XmlElement(name = "id", required = true) private String id; @XmlElement(name = "code", required = true) private String code; private PayloadParameters parameters; public String getId() { return id; } public void setId(String value) { this.id = value; } public String getCode() { return code; } public void setCode(String value) { this.code = value; } public PayloadParameters getParameters() { return parameters; } public void setParameters(PayloadParameters parameters) { this.parameters = parameters; } @Override public String toString() { return "Payload [id=" + id + ", code=" + code + "]"; } }
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <jxb:bindings node="//xs:schema//xs:element[@name='payload']" schemaLocation="./payload.xsd"> <jxb:class ref="mtitek.jaxb.bindings.payload.Payload" /> </jxb:bindings> </jxb:bindings>