Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.stream.Location;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.stream.StreamSource;

public class Main {

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

        XMLInputFactory xif = XMLInputFactory.newFactory();
        XMLStreamReader xsr = xif.createXMLStreamReader(new StreamSource(new File("input.xml")));

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setListener(new LocationListener(xsr));
        Customer customer = (Customer) unmarshaller.unmarshal(xsr);
    }

    @XmlRootElement
    public static class Customer {

        private String name;
        private Address address;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Address getAddress() {
            return address;
        }

        public void setAddress(Address address) {
            this.address = address;
        }

    }

    public static class Address {

        private String street;

        public String getStreet() {
            return street;
        }

        public void setStreet(String street) {
            this.street = street;
        }

    }
}

class LocationListener extends Unmarshaller.Listener {

    private XMLStreamReader xsr;

    public LocationListener(XMLStreamReader xsr) {
        this.xsr = xsr;
    }

    @Override
    public void afterUnmarshal(Object target, Object parent) {
        log("End", target);
    }

    @Override
    public void beforeUnmarshal(Object target, Object parent) {
        log("Start", target);
    }

    private void log(String event, Object target) {
        System.out.print(event);
        System.out.print(" ");
        System.out.print(target);
        System.out.print(" [");
        Location location = xsr.getLocation();
        System.out.print(location.getLineNumber());
        System.out.print(",");
        System.out.print(location.getColumnNumber());
        System.out.println("]");
    }

}