一.Jaxb处理java对象和xml之间转换常用的annotation有:

1. @XmlType
2. @XmlElement
3. @XmlRootElement
4. @XmlAttribute
5. @XmlAccessorType
6. @XmlAccessorOrder
7. @XmlTransient
8. @XmlJavaTypeAdapter
二.常用annotation使用说明
1. @XmlType
     @XmlType用在class类的注解,常与@XmlRootElement,@XmlAccessorType一起使用。它有三个属性:name、propOrder、namespace,经常使用的只有前两个属性。如:
     @XmlType(name = "basicStruct", propOrder = {
                      "intValue",
                      "stringArray",
                      "stringValue"
     )
在使用@XmlType的propOrder 属性时,必须列出JavaBean对象中的所有属性,否则会报错。
2.@XmlElement
@XmlElement将java对象的属性映射为xml的节点,在使用@XmlElement时,可通过name属性改变java对象属性在xml中显示的名称。如:
@XmlElement(name="Address")
private String yourAddress;
可通过 type 属性改变java对象类型转化xml类型
@XmlElement(name="Address",type = String.class,required = true)
private String yourAddress;
3.@XmlRootElement
@XmlRootElement用于类级别的注解,对应xml的根元素,常与 @XmlType 和 @XmlAccessorType一起使用。如:
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)

@XmlRootElement
public class Address {}
4.@XmlAttribute

@XmlAttribute用于把java对象的属性映射为xml的属性,并可通过name属性为生成的xml属性指定别名。如:

@XmlAttribute(name="Country")
private String state;

5.@XmlAccessorType

@XmlAccessorType用于指定由java对象生成xml文件时对java对象属性的访问方式。常与@XmlRootElement、@XmlType一起使用。它的属性值是XmlAccessType的4个枚举值,分 别为:

XmlAccessType.FIELD:java对象中的所有成员变量

XmlAccessType.PROPERTY:java对象中所有通过getter/setter方式访问的成员变量

XmlAccessType.PUBLIC_MEMBER:java对象中所有的public访问权限的成员变量和通过getter/setter方式访问的成员变量

XmlAccessType.NONE:java对象的所有属性都不映射为xml的元素

注意:@XmlAccessorType的默认访问级别是XmlAccessType.PUBLIC_MEMBER,因此,如果java对象中的private成员变量设置了public权限的getter/setter方法,就不要在 private变量上使用@XmlElement和@XmlAttribute注解,否则在由java对象生成xml时会报同一个属性在java类里存在两次的错误。同理,如果@XmlAccessorType的访问权限 为XmlAccessType.NONE,如果在java的成员变量上使用了@XmlElement或@XmlAttribute注解,这些成员变量依然可以映射到xml文件。

6.@XmlAccessorOrder

@XmlAccessorOrder用于对java对象生成的xml元素进行排序。它有两个属性值: AccessorOrder.ALPHABETICAL:对生成的xml元素按字母书序排序
XmlAccessOrder.UNDEFINED:不排序

7.@XmlTransient

@XmlTransient用于标示在由java对象映射xml时,忽略此属性。即,在生成的xml文件中不出现此元素。

8.@XmlJavaTypeAdapter

@XmlJavaTypeAdapter常用在转换比较复杂的对象时,如map类型或者格式化日期等。使用此注解时,需要自己写一个adapter类继承XmlAdapter抽象类,并实现里面的方法。

@XmlJavaTypeAdapter(value=xxx.class),value为自己定义的adapter类

XmlAdapter如下:

public abstract class XmlAdapter<ValueType,BoundType> {
  // Do-nothing constructor for the derived classes.
  protected XmlAdapter() {}
  // Convert a value type to a bound type.
  public abstract BoundType unmarshal(ValueType v);
  // Convert a bound type to a value type.
  public abstract ValueType marshal(BoundType v);
}

转载于:https://www.cnblogs.com/w-essay/p/7597746.html

JAXB实现java对象与xml之间转换相关推荐

  1. jaxb java xml序列化_XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换...

    (六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML ...

  2. JAXB处理java对象与xml格式之间的转换

    JAXB(Java Architecture for XML Binding)是J2SE和J2EE平台的一部分,让开发者能够快速完成Java类和XML的互相映射.一些具体的介绍和使用可以到此细看:JA ...

  3. Java对象和XML之间的编排与反编排

    1 创建Java class 1.1 创建Classroom.jave(int id;int grade;String name) 1.2 创建Student.java(int id;String n ...

  4. 对象转数组_fastJson中java对象 jsonObject jsonArray之间转换

    一.介绍 简介:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 二.使用 1.java对象转jsonObject User u = new User(); ...

  5. XStream---Java对象和XML之间的转换器

    XStream对象相当Java对象和XML之间的转换器,转换过程是双向的.创建XSteam对象的方式很简单,只需要newXStream()即可. Java到xml,用toXML()方法. Xml到Ja ...

  6. JAXB JavaBean与Xml之间转换

    JAXB JavaBean与Xml之间转换问题之二 接着上一篇来说,上一篇主要讲述的是关于jaxb将实体转换为xml的使用方法和注解的一些过程,但是凡事都会有缺点,而上述方法的缺点就是marshall ...

  7. SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换)

    Spring3.1开始使用新的HandlerMapping 和 HandlerAdapter 来支持@Contoller 和@RequestMapping注解处理:处理器映射RequestMappin ...

  8. JAXB:Java对象序和XML互相转化的利器

    JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式.JAXB提供两种主要特性:将一个Java对象序列化为XM ...

  9. java 转xml 变成两根下划线_XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个...

    使用XStream将java对象转换为xml时,需要对其中的一个字段加上CDATA,于是我自定义了一个XStream,主要代码如下:publicstaticXStreamcreateXstream() ...

最新文章

  1. 送书 | 2020年新一天,用这本书开启你的NLP学习之路!
  2. 英雄联盟如何指挥团战?AI帮你做决策(附资源)
  3. jdk与jre的区别(转)
  4. python用于pmc排产可以吗_生产计划员每天都在抓狂,插单、排产问题到底该怎么解决?...
  5. STM32L0开发——ADC多通道采集,IDE和IAR开发注意事项
  6. 王长松:传统文化与中医养生(东南大学)汇总
  7. [html] iframe父页面如何获取子页面的元素?
  8. 搜索引擎核心技术与算法 —— 词项词典与倒排索引优化
  9. php中提取%3cdiv,cmseasy getshell 0day
  10. The Economist经济学人是如何使用Go语言构建内容平台微服务架构的?
  11. Wireshark初步入门
  12. 完整教程--idea使用git进行项目管理
  13. win 7更改计算机用户名和密码错误,Win7旗舰版开机显示用户名和密码错误的解决教程...
  14. 计算机专业学生的学期规划,大学生大一下学期规划
  15. [BZOJ5145] [Ynoi2018] 五彩斑斓的世界 [并查集][分块][摊还分析]
  16. RouterOS o*** client 连接爱快 Open*** 服务端
  17. Python绘制股票K线图
  18. 技术总监岗位职责,网站技术总监的职能
  19. MIT计算机科学录取分数线,美国麻省理工学院分数线 美国麻省理工学院录取要求...
  20. 使用 Python3 获取网页源代码

热门文章

  1. [ACM_动态规划] hdu 1176 免费馅饼 [变形数塔问题]
  2. 盲人浏览网页辅助工具之一
  3. 通过u盘装window7
  4. 手机付费未成规模 阅读市场付费意愿萎缩
  5. 华为路由器防火墙配置命令总结(上)
  6. Python中的各种if语句(if条件判断、if...else、if...elif...else、if...else嵌套)
  7. c语言printf清屏,C语言入门 — printf 使用方法
  8. 设计算法统计二叉树(采用二叉链存储结构)中结点值为x的结点个数_20题,算法工程师能力评估测试来啦...
  9. 三坐标测量圆直径_多台三坐标测量机联动测量方法的研究
  10. 信息系统项目的应急预案方案_从环评到验收、排污许可证、应急预案,都应在项目什么阶段开展? 先后顺序是什么?...