JAXB中各种常见注解小结

本文详细解析了JAXB中用于Java对象和XML之间转换的关键标记,如@XmlElement、@XmlElementWrapper、@XmlList等,并通过一个具体的Customer类实例展示了如何使用这些标记进行属性映射和数据输出。

在JAXB中(用于JAVA对象和xml之间的转换),经常出现各类的 @XmlElement这样的标记,
下面就来以一个例子小结下,加深学习:

bean文件 Customer.java

package jaxb2;

import java.util.*;
import javax.xml.bind.annotation.*;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
    private List<String> emailAddresses;

    public Customer() {
        emailAddresses = new ArrayList<String>();
    }

    public List<String> getEmailAddresses() {
        return emailAddresses;
    }

    public void setEmailAddresses(List<String> emailAddresses) {
        this.emailAddresses = emailAddresses;
    } 

}

这个是一个典型的POJO了,其中引用了对象emailAddress,是一个List,那么下面演示各类用法:
先看默认的调用代码如下:

Java2Xml.java

package jaxb2;
import javax.xml.bind.JAXBContext;  
import javax.xml.bind.Marshaller;  

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

        Customer customer = new Customer();  
        customer.getEmailAddresses().add("example@example.com");  
        customer.getEmailAddresses().add("example@example.org");  

        Marshaller marshaller = jc.createMarshaller();  
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  
        marshaller.marshal(customer, System.out);  
    }  
}  

默认的把这个对象输出为一般的XML:
这里写图片描述


下面逐一看每个注解的用法
1. @XmlElement

@XmlElement(name="email") 
private List<String> emailAddresses;  

给emailAddresses属性加上这个注解的话,则按自定义的xml标签名去输出某个属性,如下:
这里写图片描述

2. @XmlElementWrapper

@XmlElementWrapper(name="emails")      
@XmlElement(name="email") 
private List<String> emailAddresses;

这个注解等于在最外面再包一层了, 输出:
这里写图片描述

3.@XmlList

@XmlList  
private List<String> emailAddresses;

这个等于是在同一行中,把list中的输出,以空格形式分隔开来, 输出:
这里写图片描述

4.@XmlList和 @XmlAttribute混合使用

@XmlList 
@XmlAttribute 
private List<String> emailAddresses; 

作为customer的一个属性 ,输出:
这里写图片描述

5.@XmlList 和 @XmlValue混用

 @XmlList 
 @XmlValue 
 private List<String> emailAddresses; 

就是把emailAddress的list的值,作为<customer>的value , 输出:
这里写图片描述

工程下载 (包括该文项目)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值