java xml与实体类转换「建议收藏」

java xml与实体类转换「建议收藏」@XmlRootElement注解定义xml的根节点通过name改变根节点的xml值          @XmlRootElement(name=”amimal_test”)@XmlType注解指定序列生成的xml节点顺序         @XmlType(propOrder={“id”,”age”,”name”,”bir

大家好,又见面了,我是你们的朋友全栈君。

@XmlRootElement注解定义xml的根节点 通过name改变根节点的xml值

                    @XmlRootElement(name = “amimal_test”)

@XmlType注解 指定序列生成的xml节点顺序

                 @XmlType(propOrder={“id”,”age”,”name”,”birthDay”,”list”,”person”,”map”})

           
    @XmlType的propOrder 属性时,必须列出JavaBean对象中的所有属性【是javaBean里面的属性 跟XmlElement的name设置无关】,否则会报错

@XmlAccessorOrder注解 指定生成xml节点的方式  默认是XmlAccessorOrder.UNDEFINED无序 还可设置XmlAccessorOrder.ALPHABETICAL按照属性的字母排序
注意:  @XmlType(propOrder和@XmlAccessorOrder同时存在时 以@XmlType(propOrder为准

@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注解,
只能在getter/setter方法上使用@XmlElement和@XmlAttribute注解,否则由java对象生成xml时会报同一个属性在java类里存在两次的错误。
同理,如果@XmlAccessorType的访问权限为XmlAccessType.NONE,如果在java的成员变量上使用了


@XmlElement或@XmlAttribute注解,这些成员变量依然可以映射到xml文件。

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

@XmlAttribute:该属性作为类xml节点的attribute

 @XmlElement:该属性作为xml的element,且可以增加属性(name=”NewElementName”),那么生成的xml串的elment的标签是NewElementName

 @XmlElementWrapper 修改节点的名字


修改xml的namespace 需要再package-info.java文件中添加注解

@XmlSchema(
namespace=”http://hyj.cn“,
elementFormDefault=XmlNsForm.QUALIFIED)

package com.hyj.xml;
import javax.xml.bind.annotation.*;


 @XmlJavaTypeAdapter
JAXB能够内置支持List和Set集合,但是对于Map的支持需要自己处理
继承自抽象类XmlAdapter<ValueType,BoundType> 重写marshal和unmarshal的方法
类型参数:
    BoundType – JAXB 不知道如何处理的一些类型。编写一个适配器,以便允许通过 ValueType 将此类型用作内存表示形式。
    ValueType – JAXB 无需其他操作便知道如何处理的类型。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162491.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿里云服务器怎么更换系统盘

    阿里云服务器怎么更换系统盘

    2021年9月23日
    164
  • Java e.printStackTrace()异常信息怎么打印到log日志中

    Java e.printStackTrace()异常信息怎么打印到log日志中Java e.printStackTrace()异常信息怎么打印到log日志中

    2022年4月24日
    50
  • RAC FAILover详解

    RAC FAILover详解Oracle nbsp RAC 同时具备 HA HighAvailiab 和 LB LoadBalance 而其高可用性的基础就是 Failover 故障转移 它指集群中任何一个节点的故障都不会影响用户的使用 连接到故障节点的用户会被自动转移到健康节点 从用户感受而言 是感觉不到这种切换 nbsp Oracle10gRAC 的 Failover 可以分为 3 种 1 Client Sid

    2025年6月16日
    4
  • 真封神虚拟服务器,服务器端文件详细介绍即修改(三)

    真封神虚拟服务器,服务器端文件详细介绍即修改(三)我们每星期加三个修改教程,废话不多说开始吧。1.打开服务器端,修改等级在version\chinese_gb\config的game_rule.ini可以设置最高等级和宝宝最高等级包括传送最高多钱。PK设置等等。这个相信大家一看就明白了。2.language这个文件夹属于指令的唯一能用的是W端可以读公告系统也就是点卡系统用公告修改器修改下能发公告这里就不多说了工具都是做好…

    2022年7月24日
    12
  • JavaScript如何判断是否为数字?

    JavaScript如何判断是否为数字?JavaScript如何判断是否为数字?方法1:使用isNaN()函数isNaN()函数是js自带的全局函数,isNaN()函数用于检查其参数是否是非数字值。如果值x是特殊的非数字值NaN(或者能被转换为这样的值),返回的值就是true;如果值x是其他值,则返回false。isNaN()的缺点就在于null、空格以及空串会被按照0来处理NaN:NotaNumber<script>document.write(isNaN(123));//数字-

    2022年6月29日
    29
  • md5使用方法 java_MD5在java中的使用

    md5使用方法 java_MD5在java中的使用MD5 是什么 MD5 是 message digestalgori 信息 摘要算法 的缩写 被广泛用于加密和解密技术上 它可以说是文件的 数字指纹 任何一个文件 无论是可执行程序 图像文件 临时文件或者其他任何类型的文件 也不管它体积多大 都有且只有一个独一无二的 MD5 信息值 并且如果这个文件被修改过 它的 MD5 值也将随之改变 因此 我们可以通过对比同一文件的 MD5 值 来校验这个文件是否

    2025年8月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号