PersonUnmarshaller.java Source code

Java tutorial

Introduction

Here is the source code for PersonUnmarshaller.java

Source

import java.io.File;

import javax.xml.bind.JAXBContext;
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;

public class PersonUnmarshaller {

    public static void main(String[] args) throws JAXBException {
        JAXBContext context = JAXBContext.newInstance("person");
        Unmarshaller unmarshaller = context.createUnmarshaller();

        Person person = (Person) unmarshaller.unmarshal(new File("person.xml"));
        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);
    }
}