JAXB中各种常见注解小结
2014-06-23 16:49
288 查看
在JAXB中(用于JAVA对象和xml之间的转换),经常出现各类的 @XmlElement这样的标记,
下面就来以一个例子小结下,加深学习:
Java代码
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,那么下面演示各类用法:
先看默认的调用代码如下:
Java代码
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标签名去输出某个属性,如下:
<customer>
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
</customer>
2) @XmlElementWrapper
这个注解等于在最外面再包一层了,
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlElementWrapper(name="email-addresses")
@XmlElement(name="email-address")
private List<String> emailAddresses;
}
输出:
<customer>
<email-addresses>
<email-address>janed@example.com</email-address>
<email-address>jdoe@example.org</email-address>
</email-addresses>
</customer>
3) @XmlList
这个等于是在同一行中,把list中的输出,以空格形式分隔开来,
Java代码
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlList
private List<String> emailAddresses;
}
输出:
<customer>
<emailAddresses>janed@example.com jdoe@example.org</emailAddresses>
</customer>
4)
@XmlList和 @XmlAttribute混合使用
@XmlList
@XmlAttribute
private List<String> emailAddresses;
输出:
<customer
emailAddresses="janed@example.com jdoe@example.org"/>
看到没?就是同一行中逗号输出,并作为customer的一个属性
5)
@XmlList 和 @XmlValue混用
@XmlList
@XmlValue
private List<String> emailAddresses;
就是把emailAddress的list的值,作为<customer>的value 输出,结果如下:
<customer>janed@example.com jdoe@example.org</customer>
相关文章推荐
- JAXB中各种常见注解小结
- JAXB中各种常见注解小结
- JAXB中各种常见注解小结
- JAXB中各种常见注解小结
- JAXB注解使用小结
- [置顶] *** 竞赛中的各种低级错误,及编程常见错误小结 *** 欢迎童鞋们跟帖
- 最短路小结(三种算法+各种常见变种)
- 常见的Java标注/Java注解和各种符号
- IIS7 网站发布常见问题及解决方案小结
- Gentoo下常见masked解决方法小结
- spring boot 的常用注解使用小结
- 为注解增加各种属性
- Win7 64位 mysql 5.7下载安装常见问题小结
- PCL 1.8.1 x86/64 + VS2017 配置各种问题的解决方法小结
- 力所能及之Hibernate4.3.x注解常见错误
- 几种常见的组合注解
- Hibernate基于注解方式的各种映射全面总结
- Android各种常见异常及处理----未完成
- JAXB注解使用
- 各种基本算法实现小结(三)—— 树与二叉树