Mega Code Archive

 
Categories / Java / XML
 

Unmarshall to JAXB Element

import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; 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; import javax.xml.transform.stream.StreamSource; public class MisspelledPersonUnmarshaller {   public static void main(String[] args) throws JAXBException {     JAXBContext context = JAXBContext.newInstance("person");     Unmarshaller unmarshaller = context.createUnmarshaller();     JAXBElement<Person> element = unmarshaller.unmarshal(new StreamSource("p.xml"),         Person.class);     Person person = element.getValue();     System.out.println(person.getFirstName());   } } @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);   } }