JAXB 使用

本文介绍了一个使用Java的JAXB API进行对象与XML文件相互转换的示例。示例中定义了Person和Address类,并通过JAXB实现了这些Java对象与XML之间的映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值