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

news/2024/2/28 11:09:34

前言:

最近项目在做静态代码扫描的时候,出现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.ppmy.cn/news/1278017.html

相关文章

Spring之事务(2)

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

.Net Core webapi RestFul 统一接口数据返回格式

在RestFul风格盛行的年代&#xff0c;大部分接口都需要一套统一的数据返回格式&#xff0c;那么我们怎么才能保证使用统一的json数据格式返回呢&#xff0c;下面给大家简单介绍一下&#xff1a; 假如我们需要接口统一返回一下数据格式&#xff1a; {"statusCode": …

百度网盘资源下载慢解决方法

1、使用百度网盘客户端&#xff0c;设置使用空闲带宽下载 亲测&#xff0c;可以一定程度上解决下载慢的问题&#xff0c;但是对于有些文件下载还是很慢就不清楚为什么了。 2、使用IDM进行下载 &#xff08;1&#xff09;、第一步下载和安装IDM 搜索后&#xff0c;普通下载后安…

有源和无源的区别

0 Preface/Foreword 有源和无源概念涉及不同的行业&#xff0c;那么定义也会不同&#xff0c;下面以Electronics&#xff08;电子&#xff09;为例。 有源&#xff1a;Active 无源&#xff1a;Passive 1 概念介绍 在电子学中&#xff0c;有源和无源用来描述元器件的两种基…

【即插即用篇】YOLOv8改进实战 | 引入 Involution(内卷),用于视觉识别的新一代神经网络!涨点神器!

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成…

智能优化算法应用:基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.金鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

小程序隐私保护指引组件wx.getPrivacySetting

问题&#xff1a;项目里使用了获取微信昵称的input标签&#xff0c;发现上线后获取不到微信昵称 解决方案去更新隐私保护协议 然后重新进入小程序就会弹出弹框 2.自己自定义一个隐私保护提示&#xff0c;以下是我的组件 在component里面创建privacyPopup文件夹 privacyPopup.…

使用Exchanger线程之间交换数据

public class ExchangeThread {static class Producer implements Runnable{//生产者、消费者交换的数据结构private List<String> buffer;//步生产者和消费者的交换对象private Exchanger<List<String>> exchanger;Producer(List<String> buffer,Exch…

计算机网络 第三章 应用层(习题)

第 3 章 应用层 3-1 填空题 TCP/IP 体系中&#xff0c;应用层基本的工作模型是&#xff08; 客户/服务器模型 &#xff09;。 在 Internet 中&#xff0c;使用&#xff08; URL &#xff09;表示服务器上可以访问的资源。 Web 浏览器和 Web 服务器交互时要遵循的协议是&#…

晋江IP影视化频频折戟,网文陷入工业化困境

在影视行业进入IP时代的2023年&#xff0c;晋江文学城&#xff08;以下简称晋江&#xff09;IP影视化却迎来了大溃败。 2023年&#xff0c;晋江IP在影视行业依旧十分抢手&#xff0c;多部热门网文被影视化&#xff0c;其中不乏头部视频网站的S大制作&#xff0c;但播出效果却有…

7-12 学生选课信息管理

作者 秦晓薇 单位 赤峰学院 设计一个学生选课信息管理系统&#xff0c;从屏幕读入学生、课程信息&#xff0c;执行学生选课操作&#xff0c;并显示选课结果。要求如下&#xff1a; &#xff08;1&#xff09;设计一个学生类Student&#xff0c;包括&am…

OGG同步异构数据库-表字段变更重新读取异构文件测试验证

OGG同步异构数据库-表字段变更重新读取异构文件测试验证 删除前源和目标端的同步情况&#xff1a; 配置文件信息&#xff1a; 源端&#xff1a; GGSCI (ITSMdoc-236-63) 4> view param etest extract etest setenv (MYSQL_HOME“/data/mysql-5.7.26”) tranlogoptions al…

ubuntu换源

1 首先备份Ubuntu源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2 查看自己Ubuntu版本 命令 lsb_release -a precise为源里面的关键字,根据实际情况,自行修改 3 修改更新源 先删除原文件里面的内容 sudo gedit /etc/apt/sources.list 用下面内容替…

【JVM】一、认识JVM

文章目录 1、虚拟机2、Java虚拟机3、JVM的整体结构4、Java代码的执行流程5、JVM的分类6、JVM的生命周期 1、虚拟机 虚拟机&#xff0c;Virtual Machine&#xff0c;一台虚拟的计算机&#xff0c;用来执行虚拟计算机指令。分为&#xff1a; 系统虚拟机&#xff1a;如VMware&am…

RK3568驱动指南|第八篇 设备树插件-第80章 注册attribute实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

测试:DFX DFS

DFX DFX&#xff08;Design for X&#xff09;指的是一种设计方法&#xff0c;它关注于产品的非功能性属性&#xff0c;旨在提高产品的整体竞争力和生命周期价值。这里的“X”代表产品生命周期中的某个环节或特性&#xff0c;例如供应、安装、维护等&#xff0c;也可以是影响产…

ICC2:Less than minimum edge length和Concave convex edge enclosure

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 首先,要介绍一下这两种drc Less than minimum edge length对应的tf rule如下: 而Concave convex edge enclosure对应图示和tf 规则如下,可

美易官方:美股空头今年损失1780亿美元

今年&#xff0c;美股市场的空头们遭遇了前所未有的打击。据统计&#xff0c;美股空头在今年损失了高达1780亿美元&#xff0c;创下了历史新高。这一数字令人震惊&#xff0c;因为空头通常是股市的投资者&#xff0c;他们通过借入股票并立即卖出&#xff0c;期待在股价下跌时再…

拥抱鸿蒙 - 在展讯T606平台上的探索与实践

前 言 自OpenHarmony 问世后受到了社会各界的广泛关注&#xff0c;OpenHarmony 的生态系统在如火如荼的发展。 酷派作为一家积极拥抱变化的公司&#xff0c;经过一段时间的探索与实践&#xff0c;成功实现将OpenHarmony 系统接入到展讯平台上&#xff0c;我们相信这是一个重要…

paddle 53 基于PaddleClas2.5训练自己的数据(训练|验证|推理|c++ 部署)

项目地址:https://github.com/PaddlePaddle/PaddleClas 文档地址:https://paddleclas.readthedocs.io/zh-cn/latest/tutorials/install.html paddleclas的最新项目已经不适应其官网的使用案例(训练、验证、推理命令均不适用),为此博主对其进行命令重新进行修改。同时padd…
最新文章