By default all properties of an instance are marshalled as elements in an xml file. As shown below..
Marshalling an Country insance with below class structure
Country
package package2;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElementpublic class Country {private int id;private String name;private int population;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getPopulation() {return population;}public void setPopulation(int population) {this.population = population;}@Overridepublic String toString() {StringBuilder sb = new StringBuilder();sb.append("{");sb.append("name:").append(this.name).append(",");sb.append("population:").append(this.population).append("}");return sb.toString();}}
will result in below xml
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<country>
<id>1</id>
<name>India</name>
<population>10000000</population>
</country>
If we don’t want population attribute from being marshalled, we can achieve that by marking the “getPopulation” getter with annotation @XmlTransient as shown below
@XmlTransientpublic int getPopulation() {return population;}
will result in below xml
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<country>
<id>1</id>
<name>India</name>
</country>
Main Code
package package2;import java.io.File;import java.io.FileWriter;import java.io.IOException;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;import javax.xml.bind.Unmarshaller;public class XMLTransientDemo {public static void main(String[] args) throws JAXBException, IOException {JAXBContext jaxbContext = JAXBContext.newInstance(Country.class);Marshaller marshaller = jaxbContext.createMarshaller();Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);File file = new File("result.xml");FileWriter fw = new FileWriter(file);Country country = new Country();country.setId(1);country.setName("India");country.setPopulation(10000000);marshaller.marshal(country, fw);}}