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);
}
}
Related examples in the same category