加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jaxb解析xml关于处理list的注解

发布时间:2020-12-16 09:20:05 所属栏目:百科 来源:网络整理
导读:在JAXB中(用于JAVA对象和xml之间的转换),经常出现各类的 @XmlElement这样的标记, 下面就来以一个例子小结下,加深学习: import java.util.*; import javax.xml.bind.annotation.*; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Custo
在JAXB中(用于JAVA对象和xml之间的转换),经常出现各类的 @XmlElement这样的标记,

下面就来以一个例子小结下,加深学习:

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,那么下面演示各类用法:
先看默认的调用代码如下:

import javax.xml.bind.JAXBContext;  
import javax.xml.bind.Marshaller;  
   
public class Demo {  
   
    public static void main(String[] args) throws Exception {  
        JAXBContext jc = JAXBContext.newInstance(Customer.class);  
   
        Customer customer = new Customer();  
        customer.getEmailAddresses().add("janed@example.com");  
        customer.getEmailAddresses().add("jdoe@example.org");  
   
        Marshaller marshaller = jc.createMarshaller();  
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);  
        marshaller.marshal(customer,System.out);  
    }  
}  

默认的把这个对象输出为一般的XML:
<customer>
<emailAddresses>janed@example.com</emailAddresses>
<emailAddresses>jdoe@example.org</emailAddresses>
</customer>

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

@XmlElement(name="email-address")
private List<String> emailAddresses;
加上这个注解的话,则按自定义的xml标签名去输出某个属性,如下:
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
2) @XmlElementWrapper
这个注解等于在最外面再包一层了,sans-serif; font-size:14px; line-height:25.2000007629395px">@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlElementWrapper(name="email-addresses")
@XmlElement(name="email-address")
}
输出:
<email-addresses>
</email-addresses>
3) @XmlList
这个等于是在同一行中,把list中的输出,以空格形式分隔开来,

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

输出:
<customer>
<emailAddresses>janed@example.com jdoe@example.org</emailAddresses>
4)
@XmlList和 @XmlAttribute混合使用
@XmlList
@XmlAttribute
<customer
emailAddresses="janed@example.com jdoe@example.org"/>
看到没?就是同一行中逗号输出,并作为customer的一个属性
5)
@XmlList 和 @XmlValue混用
@XmlValue
就是把emailAddress的list的值,作为<customer>的value 输出,结果如下:
<customer>janed@example.com jdoe@example.org</customer>


本文来至:http://jackyrong.iteye.com/blog/1890669

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读