Java HTML / XML How to - Unmarshal xml to Java object








Question

We would like to know how to unmarshal xml to Java object.

Answer

import java.io.StringReader;
/* w  ww  .j  a v a 2 s .c  om*/
import javax.xml.bind.JAXBContext;
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;

public class Main {

  public static void main(String[] args) throws Exception {
    JAXBContext jc = JAXBContext.newInstance(Person.class);

    Unmarshaller unmarshaller = jc.createUnmarshaller();
    StringReader xml = new StringReader(
        "<person><id>123</id><first-name>Tom</first-name><last-name>Smith</last-name></person>");
    Person person = (Person) unmarshaller.unmarshal(xml);

    System.out.println(person.id);
    System.out.println(person.firstName);
    System.out.println(person.lastName);
  }

  @XmlRootElement
  @XmlAccessorType(XmlAccessType.FIELD)
  static class Person {
    String id;

    @XmlElement(name = "first-name")
    String firstName;

    @XmlElement(name = "last-name")
    String lastName;
  }

}