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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 硬盘安装Fedora12「建议收藏」

    硬盘安装Fedora12「建议收藏」从fedora官网上下载Fedora-12-i386-DVD.iso,live的貌似不容易安装成功。把iso中的images文件夹里的install.img和isolinux文件夹里的vmlinuz、initrd.img解压出来,和iso安如下目录机构放在FAT32分区的根目录下。目录结构:C:/images/install.imgC:/vmlinuzC:/initrd.imgC:/Fedor

    2022年9月20日
    0
  • C语言和Java哪个难学?[通俗易懂]

    C语言和Java哪个难学?[通俗易懂]有人说:世界上有两种程序员,一种用Tab键,另一种用Space键。在程序员圈子有这样一条鄙视链(小道传说):C++程序员看不起C程序员,C程序员看不起Java程序员,Java程序员看不起C#程序员,C#程序员看不起美工。为什么大家普遍认为C语言比Java难?我认为原因如下:C属于底层代码,能窥探到底层,也就是说可以拿它写硬件驱动,学习C语言前面的内容比Java简单但是到了后来特别是指针、…

    2022年7月16日
    18
  • pytorch固定BN层参数[通俗易懂]

    pytorch固定BN层参数[通俗易懂]背景:基于PyTorch的模型,想固定主分支参数,只训练子分支,结果发现在不同epoch相同的测试数据经过主分支输出的结果不同。原因:未固定主分支BN层中的running_mean和running_var。解决方法:将需要固定的BN层状态设置为eval。问题示例:环境:torch:1.7.0#-*-coding:utf-8-*-importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassNet(nn.M

    2022年8月31日
    0
  • Ubuntu21.04系统安装[通俗易懂]

    Ubuntu21.04系统安装[通俗易懂]Ubuntu21.04系统安装

    2022年10月10日
    0
  • MapReduce编程初级实践_mapreduce的执行流程

    MapReduce编程初级实践_mapreduce的执行流程编程实现文件合并和去重操作对于两个输入文件,即文件A和文件B,请编写MapReduce程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件C。下面是输入文件和输出文件的一个样例供参考。输入文件A的样例如下:20150101x20150102y20150103x20150104y…

    2025年6月15日
    0
  • Linux运维常见面试题汇总

    Linux运维常见面试题汇总Linux面试题一、填空题1. 在Linux 系统中,以文件方式访问设备。2.Linux 内核引导时,从文件/etc/fstab中读取要加载的文件系统。3.Linux 文件系统中每个文件用indoe节点来标识。4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i 节点表块 和 数据存储块 。5. 链接分为:硬链接 和 符号链接 。

    2022年6月13日
    17

发表回复

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

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