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


相关推荐

  • 智能家居趋势[通俗易懂]

    智能家居趋势[通俗易懂]光纤到户,宽带提速,提升3G网络的覆盖面和服务质量,推动年内发放4G牌照,全面推进三网融合,年内在试点基础上向全国推广……种种政策告诉我们,互联网将会覆盖全球,上传、下载速度将会大幅度提高,信息时代的到来已是大势所趋。作为对于互联网依赖程度比较深的智能家居,在这样一场浪潮中,将会成为最大的受益者之一,尤其,在目前的经济形势以及技术发展形势中,智能家居代表的已经是新一轮信息技术革命中,价值最大的产业…

    2022年6月22日
    34
  • 日志分析(php+nosql+rsync+crontable)

    日志分析(php+nosql+rsync+crontable)

    2021年11月28日
    52
  • C# 深拷贝_python的浅拷贝和深拷贝

    C# 深拷贝_python的浅拷贝和深拷贝C#中的浅复制和深复制示例在本文中,我将通过示例讨论C#中的浅拷贝和深拷贝。这是我们上一篇文章的续篇。因此,在继续本文之前,请阅读我们以前的文章,其中我们使用示例讨论了C#中的原型设计模式。浅复制和深复制在复制原型设计模式中的对象中起着重要作用。因此,在本文中,我们将通过示例讨论什么是“浅复制”和“深复制”以及它们之间的区别。了解C#中的浅表复制:如果是“浅复制”,它将从现有对象创建新对象,然后将当前对象的值类型字段复制到新对象。但是在引用类型的情况下,它将仅复制引用,而不复制被引用对象本身

    2022年9月29日
    3
  • clion2022 激活【中文破解版】「建议收藏」

    (clion2022 激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1TCF2R91JZ-eyJsa…

    2022年3月31日
    2.2K
  • android p是哪个版本,Android P是什么系统?Android P与Android有什么区别?[多图][通俗易懂]

    对于AndroidP系统,是一个既熟悉又陌生的概念,网上关于AndroidP爆料很多,但具体是什么系统,与Android系统有什么区别都不太清楚。随着一年一度的古哥I/O2018开发者大会的正式召开。AndroidP系统也渐渐解开了大家的问题,具体分析如下。这次大会,算是底层系统的更新,配合手机厂商的深度定制将会带来焕然一新的使用体验。全新的AndroidP开发者预览版正式加入…

    2022年4月6日
    40
  • 找不到springapplication_idea显示找不到或无法加载主类

    找不到springapplication_idea显示找不到或无法加载主类学习是一件反人性的事情最近计划重拾微服务的学习,于是使用官方的quickinitialization生成了一个示例项目,发现SpringApplication始终无法引入,当前使用的版本是SpringBoot2.0.3.RELEASE,仔细查了一下maven依赖,对应的spring-boot-2.0.3.Release.jar包里是存在SpringApplication类的。各…

    2025年10月15日
    2

发表回复

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

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