当前位置: 首页 > news >正文

JAXB的XmlElement注解

依赖

  • 如果基于JAX-WS开发,可以在maven工程的pom.xml文件中增加如下依赖,会将依赖的JAXB库也下载下来:
<dependency><groupId>jakarta.xml.ws</groupId><artifactId>jakarta.xml.ws-api</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>com.sun.xml.ws</groupId><artifactId>jaxws-rt</artifactId><version>4.0.0</version>        
</dependency>
  • 如果只想使用JAXB库,可以在maven工程的pom.xml文件中增加如下依赖:
<dependency><groupId>jakarta.xml.bind</groupId><artifactId>jakarta.xml.bind-api</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>4.0.3</version>
</dependency>

XmlElement注解使用说明

XmlElement注解可以用在Java的属性上

备注: 如果XmlElement注解用在Java的属性上,该属性就不能出现getter和setter方法,否则运行出错

例如,下面片段XmlElement注解的属性name = "flag"指定了映射到xml中元素的名字是flag。如果不指定,xml元素的名字就会是functionCode

@XmlElement(name = "flag")
private int functionCode;

XmlElement注解可以用在属性的getter方法上

例如:

@XmlElement(name = "flag")
public int getFunctionCode() {return this.functionCode;
}

我感觉这种方法是灵活的,原因:

  • XmlElement注解用在属性的getter方法上,既能够修改映射到xml中的元素的名称,也方便在代码中设置属性。因为如果类的属性很多的话,直接用构造函数感觉太长了。
  • 如果直接注解在属性上,尽管也可以修改映射到xml中的元素的名称,但设置属性的值就必须用类的构造函数,不太方便。原因就是如果映射到属性上,那么该类属性就不能出现getter和setter方法,否则运行出错。

例如,下面用在getFunctionCode()方法上,设置了了映射到xml中的元素名称是flag

private int functionCode;@XmlElement(name = "flag")
public int getFunctionCode() {return this.functionCode;
}public void setFunctionCode(int functionCode) {this.functionCode = functionCode;
}

在调用的地方设置属性的值:

RegisterResponse registerResponse = new RegisterResponse();
registerResponse.setFunctionCode(1);

如果 XmlElement注解用在属性上,同时类中有针对该属性的getter和setter方法,是会出错的

例如,下面这段代码,XmlElement注解用在属性functionCode上,同时,有针对functionCode的getFunctionCode和setFunctionCode方法,运行就会出错,提醒有两个属性具有相同的名称(为了突出重点,调用的代码没有贴出来):

package com.thb.server.register;import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;@XmlRootElement(name = "response")
public class RegisterResponse {@XmlElement(name = "flag")private int functionCode;public RegisterResponse() {}public int getFunctionCode() {return this.functionCode;}public void setFunctionCode(int functionCode) {this.functionCode = functionCode;}    
}

运行出错:
在这里插入图片描述

相关文章:

  • 紫色调城市和奔跑人物剪影背景工会工作总结汇报PPT模板
  • RabbitMQ 部署及配置详解(集群部署)
  • VB.net WebBrowser网页元素抓取分析方法
  • HMM与LTP词性标注之依存句法分析、词性标注实现
  • 在国内购买GPT服务前的一定要注意!!!
  • Git企业开发级讲解(五)
  • 操作系统(存储管理进程管理设备管理)
  • WPF中行为与触发器的概念及用法
  • 前端算法面试之堆排序-每日一练
  • 【C语言】自定义类型:结构体、枚举、联合
  • 竞赛选题 深度学习验证码识别 - 机器视觉 python opencv
  • 博客系统页面设计
  • 侧面多级菜单(一个大类、一个小类、小类下多个物体)
  • 十三、Docker的安装
  • C++之set/multise容器
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【技术性】Search知识
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • input的行数自动增减
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java程序员幽默爆笑锦集
  • Js基础知识(四) - js运行原理与机制
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • nodejs调试方法
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Webpack 4 学习01(基础配置)
  • 安卓应用性能调试和优化经验分享
  • 利用jquery编写加法运算验证码
  • 问题之ssh中Host key verification failed的解决
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 正则学习笔记
  • 最简单的无缝轮播
  • No resource identifier found for attribute,RxJava之zip操作符
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​【已解决】npm install​卡主不动的情况
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • "无招胜有招"nbsp;史上最全的互…
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Forward) Music Player: From UI Proposal to Code
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net MySql
  • .net refrector
  • .net 调用php,php 调用.net com组件 --
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET连接MongoDB数据库实例教程
  • /bin/bash^M: bad interpreter: No such file ordirectory