Mega Code Archive

 
Categories / Java / XML
 

Create JAXBContext with custom object

import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; 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; import javax.xml.bind.annotation.XmlValue; public class Person1Test {   public static void main(String[] args) throws JAXBException {     Person person = new Person();     person.setFirstName("L");     person.setLastName("H");     JAXBContext context = JAXBContext.newInstance(Person.class);     Marshaller marshaller = context.createMarshaller();     marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);     marshaller.marshal(person, System.out);   } } @XmlRootElement() @XmlType(name = "") // @XmlAccessorType(XmlAccessType.FIELD) class Person {   // @XmlAttribute()   private String firstName;   private PersonName friend;   private String lastName;   public String getFirstName() {     return firstName;   }   @XmlElement(nillable = true)   // @XmlElement(required=true)   public PersonName getFriend() {     return friend;   }   // @XmlValue()   // @XmlTransient   public String getLastName() {     return lastName;   }   public void setFirstName(String s) {     firstName = s;   }   public void setFriend(PersonName friend) {     this.friend = friend;   }   // r @XmlTransient   public void setLastName(String s) {     lastName = s;   } } @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) class PersonName {   @XmlValue   private String value;   public String getValue() {     return value;   }   public void setValue(String value) {     this.value = value;   }   public static void main(String[] args) throws JAXBException {     PersonName pn = new PersonName();     pn.value = "foo";     JAXBContext context = JAXBContext.newInstance(PersonName.class);     context.createMarshaller().marshal(pn, System.out);   } }