In this code snippet you will learn how to define the order of XML element generated by the JAXB API. To define the element order we need to use the @XmlType
annotation in our POJO. This annotation propOrder
attribute is where we define what element should come first and which element should be place at the end.
The XML generated by the marshaller
below will have the following order: street
, city
, province
, zipcode
and country
as the last XML element.
package org.kodejava.xml.support;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
public @XmlRootElement(name = "customerAddress")
@XmlType(propOrder = {"street", "city", "province", "zipcode", "country"})
class Address {
private String street;
private String city;
private String province;
private String country;
private String zipcode;
@XmlElement
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
@XmlElement
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@XmlElement
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
@XmlElement
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@XmlElement
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipCode) {
this.zipcode = zipCode;
}
@Override
public String toString() {
return "Address{" +
"street='" + street + '\'' +
", city='" + city + '\'' +
", province='" + province + '\'' +
", country='" + country + '\'' +
", zipcode='" + zipcode + '\'' +
'}';
}
}
Now, let’s create a program to run the marshalling process of the Address
POJO to convert it into XML document:
package org.kodejava.xml;
import org.kodejava.xml.support.Address;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class JAXBElementOrder {
public static void main(String[] args) {
Address address = new Address();
address.setStreet("Sunset Road");
address.setCity("Denpasar");
address.setProvince("Bali");
address.setCountry("Indonesia");
address.setZipcode("80225");
try {
JAXBContext context = JAXBContext.newInstance(Address.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(address, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
And it will give you the following output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customerAddress>
<street>Sunset Road</street>
<city>Denpasar</city>
<province>Bali</province>
<zipcode>80225</zipcode>
<country>Indonesia</country>
</customerAddress>
Maven Dependencies
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-ri</artifactId>
<version>2.3.5</version>
<type>pom</type>
</dependency>
</dependencies>
Latest posts by Wayan (see all)
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024