@XmlAccessorType+@XmlElement完美解决Java类到XML映射问题

前言:

最近项目在做静态代码扫描的时候,出现Java类中成员变量命名的问题,开头字母必须小写,但是这个类成员是对接其他公司的字段,对方提供的请求格式是XML,必须将Java类转化为XML的格式,而且这个类成员变量开头还必须大写,网上查阅了大量资料,总结出了使用这个三个变量可以完美解决问题。

这里笔者就不使用@Data注解了,方便食用!!!

目的:

1 将Java类成功映射成XML

2 类中某个成员变量开头大写

准备:

@XmlAccessorType 和 @XmlElement 是 Java Architecture for XML Binding (JAXB) 规范中的注解,用于控制 Java 对象与 XML 表示之间的映射关系。

@XmlAccessorType(XmlAccessType.FIELD):

工作原理: 该注解用于指定 JAXB 在映射 Java 类与 XML 之间的时候,应该访问哪一种属性。XmlAccessType.FIELD 表示 JAXB 应该直接访问类的字段(fields),而不是通过 getter 和 setter 方法。
作用: 控制 JAXB 如何访问类的属性。

@XmlElement:

工作原理: 该注解用于映射 Java 类的字段或属性到 XML 元素。它可以用在字段或 getter 方法上。
作用: 定义 Java 对象如何转换为 XML 元素以及反向转换。

三种不同场景示例:

场景一:仅使用 @XmlElement 注解,这里注意一般是写在get方法上面

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement
public class Person {private String name;private int age;@XmlElementpublic String getName() {return name;}public void setName(String name) {this.name = name;}@XmlElementpublic int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

结果:

<person><name>John Doe</name><age>30</age>
</person>

场景二:仅使用 @XmlAccessorType(XmlAccessType.FIELD) 注解

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Person {private String name;private int age;// No need for @XmlElement herepublic String getName() {return name;}public void setName(String name) {this.name = name;}// No need for @XmlElement herepublic int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

结果:

<person><name>John Doe</name><age>30</age>
</person>

场景三:共同使用 @XmlAccessorType(XmlAccessType.FIELD) 和 @XmlElement 注解

这里已经很明显了,在使用@XmlAccessorType(XmlAccessType.FIELD)基础上,可以修改成员变量映射XML后的名称

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Person {// No need for @XmlElement hereprivate String name;// No need for @XmlElement hereprivate int age;// @XmlElement is required here@XmlElement(name = "Acity")private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

结果:

<person><name>John Doe</name><age>30</age><Acity>New York</Acity>
</person>

总结:

第三种场景就可以满足本次需求!!!

在上述示例中,第一个场景使用了 @XmlElement 注解,第二个场景使用了 @XmlAccessorType(XmlAccessType.FIELD) 注解,而第三个场景同时使用了两者。在场景三中,对于 address 字段,使用了 @XmlElement(name = "Acity") 来指定 XML 元素的名称。这些注解的组合方式可以根据需求来灵活使用,以达到对 XML 与 Java 对象的映射要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qlistwidget双击编辑的时候 如何控制编辑框大小

1 默认的时候比较编辑框比较小&#xff0c;当设置 ListWidget->editItem(item);的时候会出现一个比较lineedit的&#xff0c;通过设置qss&#xff0c;可以控制lineedit的宽度&#xff0c;但是高度控制不了。通过qss设置lineedit border: 0px&#xff1b;勉强可以看到item的…

Debezium系列之:Flink SQL消费Debezium数据格式,同步数据到下游存储系统

Debezium系列之:Flink SQL消费Debezium数据格式,同步数据到下游存储系统 一、Debezium二、依赖三、使用Debezium Format四、可用元数据五、Format参数六、重复的变更事件七、消费 Debezium Postgres Connector 产生的数据八、数据类型映射一、Debezium Debezium 是一个 CDC(…

rtsp视频在使用unity三维融合播放后的修正

1 rtsp 接入 我们使用unity UE 等三维渲染引擎中使用c编写插件来接入rtsp 视频。同时做融合的时候&#xff0c;和背景的三维颜色要一致&#xff0c;这就要使用视频融合修正技术。包括亮度&#xff0c;对比度&#xff0c;饱和度的修正。在单纯颜色上的修正可以简单使用rgb->…

Vue 复制、下载 图片和文字

目录 功能描述 图片的格式 复制图片和文字 第一种&#xff0c;直接复制&#xff08;不推荐&#xff09; 第二种&#xff0c;画图后复制 下载图片和文字 总结 功能描述 可以简单描述成复制图片和文字&#xff0c;下载图片和文字 前者还好说&#xff0c;比如在图片右键点…

文心一言 VS 讯飞星火 VS chatgpt (162)-- 算法导论13.1 2题

二、用go语言&#xff0c;对图13-1中的红黑树&#xff0c;画出对其调用TREE-INSERT 操作插人关键字 36 后的结果。如果插人的结点被标为红色&#xff0c;所得的树是否还是一棵红黑树?如果该结点被标为黑色呢? 文心一言&#xff0c;代码不能运行&#xff1a; 在Go语言中&…

Java中的基本数据类型

在Java中&#xff0c;基本数据类型有以下几种&#xff1a; 整数类型&#xff1a; byte&#xff1a; 1字节&#xff0c;在内存中范围为-128到127short&#xff1a; 2字节&#xff0c;在内存中范围为-32768到32767int&#xff1a; 4字节&#xff0c;在内存中范…

通过生成表征的自条件图像生成

文章目录 摘要1、简介2、相关工作3、方法4、结果4.1、设置4.2、无条件类别的生成4.3、无分类器指导4.4、消融实验4.5、计算成本4.6、定性结果 5、讨论 摘要 https://arxiv.org/pdf/2312.03701.pdf 本文提出了表示条件图像生成&#xff08;Representation-Conditioned Image Ge…

【Unity的实现好用的曲面UI_切角曲面边框流光效果_案例分享(内附源码)】

曲面UI_切角边框流光效果_案例分享 相关续篇效果图如下:Canvas 节点上的CurvedUISettings组件:CurvedUISettings组件CurvedUISettings代码如下:CurvedUIVertexEffectCurvedUIVertexEffect组件CurvedUIVertexEffect代码如下:最终效果:切角边框流光效果Shader代码解析实现思…

python绘制烟花特定爆炸效果,python画烟花绽放出字

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python绘制烟花特定爆炸效果&#xff0c;python画烟花绽放出字&#xff0c;今天让我们一起来看看吧&#xff01; 本文参考了https://blog.csdn.net/weixin_43943977/article/details/102691392博主的樱花以及https://bl…

Python办公自动化Day1

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;xlwt创建Excelxlrd读取Excelxlutils修改Excelxlwt设置样式常见的字体样式单元格宽高内容对齐方式设置单元格边框设置背景颜色样式整合起来的写法 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语言基础&#xff0c;非编…

Ubuntu及Docker 安装rabbitmq

安装ubuntu 前 先暴露端口&#xff1a; 5672 用于与mq服务器通信用 15672 管理界面使用的端口 docker命令&#xff1a;docker run -itd --name ubuntu -p 5672:5672 -p 15672:15672 ubuntu 进入docker : docker exec -it ubuntu /bin/bash 步骤&#xff1a; 1. 更新安装源…

otter-harbor同步

一. 部署及依赖 otter Github (一). 服务启动 1. mysql 5.6版本以上&#xff0c;作为 otter-manger 使用的数据库 # mysql docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7 --character-set-serverutf8mb4 --collation-serverutf8mb4_un…

Alpha突触核蛋白神经退行性疾病

Alpha突触核蛋白科研背景 ● Alpha突触核蛋白约 15kDa, 140个氨基酸 ● StressMarq在E. coli中过表达人源基因然后将蛋白从细胞质基质中纯化出来 ● 未折叠的alpha突触核蛋白单体在12% SDS-PAGE上为~15 kDa的条带 StressMarq/欣博盛生物的Alpha突触核蛋白有以下两类&#xf…

电商物流信息化管理:淘宝商品快递费用的item_fee解决方案

随着电子商务的飞速发展&#xff0c;物流信息化管理在电商运营中扮演着越来越重要的角色。淘宝作为中国最大的电商平台之一&#xff0c;其商品快递费用是电商物流成本的关键部分。本文将探讨如何通过电商物流信息化管理和淘宝商品快递费用的item_fee解决方案&#xff0c;提高物…

Open3D 最小二乘拟合平面(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫自重。 一、算法原理 平面方程的一般表达式为: A x + B y + C z

docusaurus简介及使用心得

docusaurus简介 Docusaurus 是 Facebook 专门为开源项目开发者提供的一款易于维护的静态网站创建工具&#xff0c;使用 Markdown 即可更新网站。构建一个带有主页、文档、API、帮助以及博客页面的静态网站&#xff0c;只需5分钟。 同类竞品还有vuepress&#xff0c;docusaurus…

计算机网络经典问题万字总结(笔试,面试,期末)

计算机网络经典问题&#xff08;笔试&#xff0c;面试&#xff0c;期末&#xff09; 1. ALL应用层&#xff08;Application Layer&#xff09;&#xff1a;传输层&#xff08;Transport Layer&#xff09;&#xff1a;网络层&#xff08;Network Layer&#xff09;&#xff1a;…

Hive权限管理

Hive权限管理 1、hive授权模型介绍 &#xff08;1&#xff09;Storage Based Authorization in the Metastore Server 基于存储的授权 - 可以对Metastore中的元数据进行保护&#xff0c;但是没有提供更加细粒度的访问控制&#xff08;例如&#xff1a;列级别、行级别&#xf…

华夏ERP getAllList;.ico敏感信息泄露漏洞

漏洞描述 华夏ERP是基于SpringBoot框架和SaaS模式&#xff0c;立志为中小企业提供开源好用的ERP软件&#xff0c;目前专注进销存财务功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订…

个性化TikTok外贸工具定制!突破营销新境界!

随着全球化的加速发展&#xff0c;外贸行业正面临着前所未有的机遇和挑战&#xff0c;在这个竞争激烈的市场环境中&#xff0c;如何脱颖而出&#xff0c;吸引更多的潜在客户&#xff0c;成为每个外贸企业亟待解决的问题&#xff0c;而个性化TikTok外贸工具的定制&#xff0c;正…