例子:

@XmlAccessorType(XmlAccessType.FIELD)

String name=”CY”;
}

public static void main(String[] args){
    JAXBContent context = JAXBContent.newInstance(Boy.class);

Marsheller marsheller = context.createMarsheller();

UnMarsheller unmarsheller = context.createUnMarsheller();

Boy boy = new Boy();

marsheller.marshel(boy,System.out);

System.out.println();

String xml=”<boy><name>David</name></boy>”;

Boy boy2 = (Boy)unmarsheller.unmarshel(new StringReader(xml));

System.out.println(boy2.name);

}

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><boy><name>CY</name></boy>
David
先是marshall成 xml文件,

@XmlAccessorType(XmlAccessType.FIELD)  --> @XmlAccessorType(XmlAccessType.PROPERTY)

所以再运行的结果是:

CY

-----------------------------------------------------

在 改动一 的基础上,给name属性添加 get set 方法。 再运行,结果为:

David
由此 可见 @XmlAccessorType 这个annotation 的作用。

@XmlRootElement 
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {    
    String name = "CY";
     int age = 10;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

@XmlRootElement // bixude 
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
    String name = "CY";
    @XmlElement
     int age = 10;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><boy><age>10</age> <name>CY</name></boy>
David

对于根元素,可以设置属性:

这样,在生成的xml文件中,<boy> 标签 就会变为 <b> 标签。并且加上一个命名空间。

下面解释 @XmlJavaTypeAdaptor 的作用。

private Address address; // 是一个接口
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

所以 这里要加上 @XmlJavaTypeAdapter(AddressAdapter.class)

这个类会返回Address接口的一个具体实现类的对象。

这 就是 @XmlJavaTypeAdapter 的作用

@XmlType

默认情况下,Jaxb编组出来的xml中的字段顺序是随机的,你可以使用@XmlType的propOrder属性
来指定序列化的顺序。
 
定义java类时,使用@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。

    package step2;
import java.util.Set; import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType; @XmlRootElement
@XmlType(propOrder = { "id", "name", "age","book"})
public class Customer {
String name;
int age;
int id;
Set<Book> book;
@XmlElement(name="name")
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @XmlElement(name="age")
public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
@XmlElement(name="id")
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} @Override
public String toString() {
return "Customer [id=" + id + ",name=" + name + ",age=" + age + ",book=" + book + "]";
}
@XmlElementWrapper(name="books")
@XmlElement(name="book")
public Set<Book> getBook() {
return book;
} public void setBook(Set<Book> book) {
this.book = book;
} }
输出的xml:
 
注:
1.对于@XmlElementWrapper标注的属性,不能出现在@XmlType的propOrder列表中。
2.对于所有@XmlElement标注过的属性,必须出现在@XmlType的propOrder列表中。

@XmlAccessorType @XmlType 详解的更多相关文章

  1. Spring RestTemplate详解

    Spring RestTemplate详解   1.什么是REST? REST(RepresentationalState Transfer)是Roy Fielding 提出的一个描述互联系统架构风格 ...

  2. Oracle建立全文索引详解

    Oracle建立全文索引详解1.全文检索和普通检索的区别 不使用Oracle text功能,当然也有很多方法可以在Oracle数据库中搜索文本,比如INSTR函数和LIKE操作: SELECT *FR ...

  3. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  4. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  5. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  6. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  7. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  8. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  9. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

随机推荐

  1. python中的property

    提示:这篇博文参考了两个博客,第一篇博文地址为:https://www.cnblogs.com/Lambda721/p/6132206.html,另一篇博文地址如下:关于python的property ...

  2. ImageLoader作用 AAAA

    https://github.com/nostra13/Android-Universal-Image-Loader ImageLoader作用 1.多线程下载图片,图片可以来源于网络,文件系统,项目 ...

  3. django multidb --- router

    之前一篇随笔, 提到了django中怎么使用多数据库, 但是在实际工程中遇到了一个问题,就是admin指定了使用某库, 在测试环境上没问题, 当部署后(库也变动了位置), 修改一个admin的mode ...

  4. 20162311 Hash 补分博客

    20162311 Hash 补分博客 一.任务详情 二.解题过程 除留余数法和拉链法都懂了,也都会做,主要是开放寻址法.课下查了一些资料,也问了老师才彻底理解 引用例子 引用网上的一个例子来理解 参考 ...

  5. assert_param

    在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用.如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义 ...

  6. JAVA I/O(五)多线程网络Socket和ServerSocket

    上篇文章介绍了Socket和ServerSocket简单使用和源码,服务器端会对每个客户端请求创建一个线程,为使服务器端能同时处理多个客户端请求,可以采用多线程的方式.本文仅对实例进行简单记录,如下. ...

  7. git如何列出分支之间的差异commit

    答:使用git log master..diff_master 这样就可以列出在diff_master分支中包含的commit而在master分支中不包含的commit

  8. linux的dns被劫持

    环境:ubuntu16.04 解说:ubuntu使用dnsmasq获取要解析的网站ip,dnsmasq通过域名服务器获取网站ip,并将ip缓存起来,那么就可以减少对外网域名服务器的访问,从而可以使系统 ...

  9. 三羊献瑞|2015年蓝桥杯B组题解析第三题-fishers

    三羊献瑞 观察下面的加法算式: 祥 瑞 生 辉 三 羊 献 瑞 三 羊 生 瑞 气 (如果有对齐问题,可以参看[图1.jpg]) 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写& ...

  10. 使用CLR Profiler查看C#运行程序的内存占用情况

    http://blog.csdn.net/wy3552128/article/details/8158938 https://msdn.microsoft.com/en-us/library/ff65 ...