在JAXB标准中,@XmlElementWrapper注解表示生成一个包装 XML 表示形式的包装器元素。 此元素主要用于生成一个包装集合的包装器 XML 元素。因此,该注释支持以下两种形式的序列化。

注:@XmlElementWrapper仅允许出现在集合属性上。

第一步:定义将要转化的Java对象

  1. package step1.wrapper;
  2. import javax.xml.bind.annotation.XmlAttribute;
  3. import javax.xml.bind.annotation.XmlElement;
  4. import javax.xml.bind.annotation.XmlElementWrapper;
  5. import javax.xml.bind.annotation.XmlRootElement;
  6. @XmlRootElement
  7. public class Customer {
  8. String[] names;
  9. int age;
  10. int id;
  11. //使用@XmlElementWrapper注解后,将会在原xml结点上再包装一层xml
  12. @XmlElementWrapper(name="allnames")
  13. @XmlElement(name="myname")
  14. public String[] getNames() {
  15. return names;
  16. }
  17. public void setNames(String[] names) {
  18. this.names = names;
  19. }
  20. @XmlElement
  21. public int getAge() {
  22. return age;
  23. }
  24. public void setAge(int age) {
  25. this.age = age;
  26. }
  27. @XmlAttribute
  28. public int getId() {
  29. return id;
  30. }
  31. public void setId(int id) {
  32. this.id = id;
  33. }
  34. @Override
  35. public String toString() {
  36. return "Customer [id=" + id + ",names=" + names + ",age=" + age + "]";
  37. }
  38. }

第二步:编组

  1. package step1.wrapper;
  2. import java.io.File;
  3. import javax.xml.bind.JAXBContext;
  4. import javax.xml.bind.JAXBException;
  5. import javax.xml.bind.Marshaller;
  6. //Marshaller
  7. public class Object2XmlDemo {
  8. public static void main(String[] args) {
  9. Customer customer = new Customer();
  10. customer.setId(100);
  11. customer.setNames(new String[]{"name-a","name-b","name-c"});
  12. customer.setAge(29);
  13. try {
  14. File file = new File("C:\\file.xml");
  15. JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
  16. Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
  17. // output pretty printed
  18. jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
  19. jaxbMarshaller.marshal(customer, file);
  20. jaxbMarshaller.marshal(customer, System.out);
  21. } catch (JAXBException e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. }

生成的xml:

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <customer id="100">
  3. <age>29</age>
  4. <allnames>
  5. <myname>name-a</myname>
  6. <myname>name-b</myname>
  7. <myname>name-c</myname>
  8. </allnames>
  9. </customer>

JAXB--@XmlElementWrapper注解(二)的更多相关文章

  1. JAXB学习(二): 对JAXB支持的主要注解的说明

    我们在上一篇中对JAXB有了一个大致的认识,现在我们来了解JAXB的一些主要注解. 顶层元素:XmlRootElement 表示整个XML文档的类应该使用XmlRootElement修饰,其实就像之前 ...

  2. JAXB常用注解讲解(超详细)

    简介: JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例 ...

  3. Spring学习(9)--- @Autowired注解(二)

    可以使用@Autowired注解那些众所周知的解析依赖性接口,比如:BeanFactory,ApplicationContext,Environment,ResourceLoader,Applicat ...

  4. Spring MVC的注解二

    概述 Spring从2.5版本开始引入注解,虽然版本不断变化,但是注解的特性一直被延续下来并不断进行扩展,这里就来记录一下Spring MVC中常用的注解,本文承接前文继续记录@PathVariabl ...

  5. springmvc 注解二

    @SessionAttributes @sessionattributes注解应用到Controller上面,可以将Model中的属性同步到session作用域当中. SessionAttribute ...

  6. HowToDoInJava 其它教程 2 · 翻译完毕

    原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 JMS 教程 JMS 教 ...

  7. JAXB注解的使用详解

    前言: 最近一直在做各种接口的对接,接触最多的数据类型就是JSON和XML数据,还有XML中包含JSON的数据,而在Java中对象和XML之间的转换经常用到JAXB注解,抽空在这里总结一下,首先做一下 ...

  8. 从 注解和继承 到 JAXB中的注意事项

    从 注解和继承 到 JAXB中的注意事项 注解在继承中的行为 如果一个父类添加了一个注解,子类是否能取到这个注解呢?如下 package inheritance; import java.lang.a ...

  9. SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置

    一.SpringBoot常用注解二.SpringBoot自动配置机制SpringBoot版本:1.5.13.RELEASE 对应官方文档链接:https://docs.spring.io/spring ...

随机推荐

  1. 时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)——三次指数平滑算法可以很好的保存时间序列数据的趋势和季节性信息

    from:http://www.cnblogs.com/kemaswill/archive/2013/04/01/2993583.html 在时间序列中,我们需要基于该时间序列当前已有的数据来预测其在 ...

  2. Digitalocean+DNSPod搭建Meteor.js博客Telescope.js

    1. 什么是Meteor.js 基于Node.js的一个快速开发平台. 简言之,Node.js>Meteor.js 对等于Ruby>Ruby on Rails的关系. 官网:http:// ...

  3. IAR使用notice

    1.IAR中无法程序跳转问题 在工程的C编译器选项里的预编译添加$TOOLKIT_DIR$\inc解决,需要clean一下工程再make即可.($TOOLKIT_DIR$:这个语法表示包含文件的路径在 ...

  4. poj2159

    题解: 记录一下每个串每个字母出现的次数 排序 然后看看是否相等 代码: #include<cstdio> #include<cstring> #include<cstr ...

  5. ansible入门02

    1.常用模块 1.1 group模块 添加或删除组             name=             state=:present(添加),absent(删除)             sy ...

  6. <NET CLR via c# 第4版>笔记 第5章 基元类型、引用类型和值类型

    5.1 编程语言的基元类型 c#不管在什么操作系统上运行,int始终映射到System.Int32; long始终映射到System.Int64 可以通过checked/unchecked操作符/语句 ...

  7. SSRS实现 矩阵列实现动态列

    需求背景:按区域查询店铺的销售量和库存量,然后店铺的数据是动态的.实现类似效果如下图,其中蓝色框是动态的,店铺的数量是不确定的,可能是3个,也可能是20个. 步骤一: 步骤二: 加工后: 最后效果:

  8. New Concept English Two 20 52

    $课文50  乘车兜风 510. I love travelling in the country, but I don't like losing my way. 我喜欢在乡间旅行,但却不愿意迷路. ...

  9. Java 工程师求职遇害|多一分警惕,少一份悲剧

    当朋友圈里满是战狼票房屡创新高的刷屏文章时,一则有关 Java 开发工程师李文星面试遇害的报道,却令人唏嘘不已.年仅23岁.正值青春年少.怀揣着通过打拼奋斗实现养家糊口梦想的大学毕业生,在初入职场的第 ...

  10. BZOJ3296:Learning Languages(简单并查集)

    3296: [USACO2011 Open] Learning Languages Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 436  Solved ...