当前位置: 代码迷 >> 综合 >> JAXB 使用
  详细解决方案

JAXB 使用

热度:64   发布时间:2023-12-22 06:02:39.0

public class JAXB2Tester {

    public static void main(String[] args) throws JAXBException,IOException {

        JAXBContext context = JAXBContext.newInstance(Person.class);

        //下面代码演示将对象转变为xml

        Marshaller m = context.createMarshaller();

        Address address = new Address("China","Beijing","Beijing","ShangDi West","100080");

        Person1 p = new Person1(Calendar.getInstance(),"JAXB2",address,Gender.MALE,"SW");

        FileWriter fw = new FileWriter("person.xml");

        m.marshal(p,fw);

 

        //下面代码演示将上面生成的xml转换为对象

        FileReader fr = new FileReader("person.xml");

        Unmarshaller um = context.createUnmarshaller();

        Person1 p2 = (Person1)um.unmarshal(fr);

        System.out.println("Country:"+p2.getAddress().getCountry());

    }

}

 

@XmlRootElement//表示person是一个根元素

class Person1 {    

    @XmlElement

    Calendar birthDay; //birthday将作为person的子元素

 

    @XmlAttribute

    String name; //name将作为person的的一个属性

 

    public Address getAddress() {

        return address;

    }

 

    @XmlElement

    Address address; //address将作为person的子元素

 

    @XmlElement

    Gender gender; //gender将作为person的子元素

 

    @XmlElement

    String job; //job将作为person的子元素

 

    public Person1(){

    }

 

    public Person1(Calendar birthDay, String name, Address address, Gender gender, String job) {

        this.birthDay = birthDay;

        this.name = name;

        this.address = address;

        this.gender = gender;

        this.job = job;

    }

}

 

enum Gender{

    MALE(true),

    FEMALE (false);

    private boolean value;

    Gender(boolean _value){

        value = _value;

    }

}

 

class Address {

    @XmlAttribute

    String country;

    @XmlElement

    String state;

    @XmlElement

    String city;

    @XmlElement

    String street;

    String zipcode; //由于没有添加@XmlElement,所以该元素不会出现在输出的xml中

 

    public Address() {

    }

 

    public Address(String country, String state, String city, String street, String zipcode) {

        this.country = country;

        this.state = state;

        this.city = city;

        this.street = street;

        this.zipcode = zipcode;

    }

 

 

    public String getCountry() {

        return country;

    }

}