Unmarshall to JAXB Element : JAXBContext « XML « Java






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

1.Unmarshall with JAXB
2.Marshal object with JAXB
3.Create JAXBContext with custom object
4.Marshal enum
5.Use Marshal Validation