jaxb需要jar包吗_JAXB –不需要注释

jaxb需要jar包吗

似乎有一个误解,认为在模型上需要注释才能使用JAXB(JSR-222)实现。 事实是,JAXB是例外配置,因此仅当您要覆盖默认行为时才需要注释。 在此示例中,我将演示如何在不提供任何元数据的情况下使用JAXB。

领域模型

在此示例中,我将使用以下域模型。 注意如何没有任何类型的注释。

顾客

在此示例中, 客户是根对象。 通常,我们将使用@XmlRootElement对其进行注释 。 稍后在演示代码中,您将看到我们如何使用JAXBElement实例。

package blog.defaults;import java.util.List;public class Customer {private String firstName;private String lastName;private List<PhoneNumber> phoneNumbers;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public List<PhoneNumber> getPhoneNumbers() {return phoneNumbers;}public void setPhoneNumbers(List<PhoneNumber> phoneNumbers) {this.phoneNumbers = phoneNumbers;}}

电话号码

我特意为此类中的字段指定了废话名称,以便稍后在查看XML时,您将能够看到默认情况下元素名称是从属性而不是字段派生的。

package blog.defaults;public class PhoneNumber {private String foo;private String bar;public String getType() {return foo;}public void setType(String type) {this.foo = type;}public String getNumber() {return bar;}public void setNumber(String number) {this.bar = number;}}

示范代码

由于我们没有使用@XmlRootElement (或@XmlElementDecl )将根元素与Customer类相关联,因此我们需要告诉JAXB我们要将XML文档解组到哪个类。 这可以通过使用采用Class参数(第14行)的解组方法之一来完成。 这将返回J AXBElement ,然后通过在其上调用getValue来访问Customer对象(第15行)。 为了将对象封送回XML,我们需要确保将其包装在JAXBElement中以提供根元素信息(第17行)。

package blog.defaults;import javax.xml.bind.*;
import javax.xml.namespace.QName;
import javax.xml.transform.stream.StreamSource;public class Demo {public static void main(String[] args) throws Exception {JAXBContext jc = JAXBContext.newInstance(Customer.class);StreamSource xml = new StreamSource("src/blog/defaults/input.xml");Unmarshaller unmarshaller = jc.createUnmarshaller();JAXBElement<Customer> je1 = unmarshaller.unmarshal(xml, Customer.class);Customer customer = je1.getValue();JAXBElement<Customer> je2 = new JAXBElement<Customer>(new QName("customer"), Customer.class, customer);Marshaller marshaller = jc.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);marshaller.marshal(je2, System.out);}}

input.xml /输出

以下是运行演示代码的输入和输出。 我们首先看到的是,它是数据的非常合理的XML表示形式,没有任何JAXB工件。 默认情况下,JAXB会将所有内容封送为XML元素,根据PhoneNumber类,我们看到元素名称是从属性名称派生的。

<?xml version="1.0" encoding="UTF-8"?>
<customer><firstName>Jane</firstName><lastName>Doe</lastName><phoneNumbers><number>555-1111</number><type>work</type></phoneNumbers><phoneNumbers><number>555-2222</number><type>home</type></phoneNumbers>
</customer>

进一步阅读

如果您喜欢这篇文章,那么您可能也会对以下内容感兴趣:

  • 该博客上的大多数文章都描述了如何利用JAXB元数据的功能来支持不同的用例,我邀请您检查一下它们:
    • http://blog.bdoughan.com/?tag=jaxb
  • 如果您希望在不使用批注的情况下指定元数据,则可能对EclipseLink JAXB(MOXy)的外部映射文档感兴趣:
    • 扩展JAXB –将元数据表示为XML
    • 扩展JAXB –将元数据表示为JSON

参考: JAXB – Java XML和JSON绑定博客中的JCG合作伙伴 Blaise Doughan 不需要注释 。


翻译自: https://www.javacodegeeks.com/2012/07/jaxb-no-annotations-required.html

jaxb需要jar包吗

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

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

相关文章

MATLAB均值和标准差

mean(); %均值std(); %标准差

Codeforces Round #498 (Div. 3) F. Xor-Paths

题目链接&#xff1a;F. Xor-Paths 题解&#xff1a;从起点和终点双向搜索在中间相遇时更新答案 1 #include<bits/stdc.h>2 #include<set>3 #include<cstdio>4 #include<iomanip>5 #include<iostream>6 #include<string>7 #include<cst…

创建健壮的微服务架构所涉及的组件

在本文中&#xff0c;我们将简要学习构建强大的微服务应用程序所需的各种软件组件。 在简要了解每个架构组件之前&#xff0c;我们将陈述设计微服务架构时出现的一般查询。 1.微服务架构组件 每当我们创建微服务应用程序时&#xff0c;我们都会想到以下问题 我们将如何注册微…

MATLAB画图命令zz

一、散点图 1&#xff0e;1&#xff0e;命令 plot 功能 线性二维图。在线条多于一条时&#xff0c;若用户没有指定使用颜色&#xff0c;则plot循环使用由当前坐标轴颜色顺序属性&#xff08;current axes ColorOrder property&#xff09;定义的颜色&#xff0c;以区别不同的…

MATLAB判断奇偶数

if mod(n,2)%偶数else%奇数

从percona server 5.7换到mariadb 10.2

过去两年半一直推荐使用percona server&#xff0c;今天开始&#xff0c;因为一些mysql迟迟不不愿意支持的特性&#xff0c;打算换回mariadb 10.2了&#xff0c;具体哪些不说了&#xff0c;总之非常关键&#xff0c;mariadb都支持一两年了&#xff0c;oracle公司因为oracle的原…

jax-rs jax-ws_JAX-WS入门

jax-rs jax-wsJAX-WS代表XML Web Services的Java API。 它是一种Java编程语言API&#xff0c;用于创建Web服务和使用XML进行通信的客户端。 这篇文章是JAX-WS的快速入门。 先决条件 GlassFish与Eclipse集成在一起 。 创建JAX-WS Web服务 1.在Eclipse中创建一个名为“ com.e…

MATLAB求解非线性方程组

function F fun(x)x1 x(1); x2 x(2);F [2*x13*x2-3;3*x12*x2-5];>>fsolve(fun,[0,0])如果有变系数如下&#xff1a; function F fun(x,a,b)x1 x(1); x2 x(2);F [a(1)*x1b(1)*x2-3;a(2)*x1b(2)*x2-5];>>fsolve(fun,[0,0],[],a,b);%中间加一个[],后面传参数即…

lingo解题报告内容解释

1.2菜单介绍 1.2.1 File 1 New 新建一个窗口,当你执行这个命令时,会出现如下对话框: 你可以在对话框中选择你想要建立的类型.类型如下: 1)扩展名为(*.lg4) LG4格式是LINGO4.0的版本,是在Windows下最主要的储存文件格式,这种格式支持字体格式,自定义格式以及动态连接, LG4以二进…

OpenShift上的无痛集装箱化JBoss通用贷款处理

我们从头到尾讨论了各个层次&#xff0c;但尚未为您提供除Red Hat之外的任何应用程序开发工具。我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 容器开发套件&#xff08;CDK&#xff09; 。 到目前为止&#xff0c;您所拥有的只是一个…

多任务编程—多进程

什么是多任务编程&#xff1f; 多任务编程其实和计算机系统内核有关&#xff0c;通过程利用多个计算机内核同时执行程序&#xff0c;以此来提升程序执行的效率。 多任务编程其中包括&#xff0c;多进程、多线程和多协程&#xff0c;这三种多任务编程各有各的优点和缺点&#xf…

MATLAB数值取整

fix(x);%截尾取整&#xff0c;下取整floor(x);%高斯取整&#xff0c;不超过x的最大整数ceil(x);%大于x的最小整数&#xff0c;上取整round(x);%四舍五入取整

Tomcat权威指南-读书摘要系列6

6. Tomcat 安全防护 使用SecurityManager 在Tomcat中&#xff0c;决定安全策略的配置文件是$CATALINA_HOME/conf/catalina.policy&#xff0c;在用-security选项调用Tomcat的时候&#xff0c;JVM读取这一文件。以安全模式启动Tomcat.\catalina.bat start -security 安全漏洞 Cr…

MATLAB找波峰波谷

全局波峰波谷&#xff1a;max();min();所有波峰波谷&#xff1a;findpeaks();pks findpeaks(data) [pks,locs] findpeaks(data) ------pks 对应峰值&#xff0c;locs 对应峰值位数 [...] findpeaks(data,minpeakheight,mph)----mph 设定峰值的最小高度 [...] findpeaks(dat…

chrome 浏览器全屏操作

chrome.exe -kiosk [网页]转载于:https://www.cnblogs.com/yang95/articles/9335975.html

java锁实现_Java锁实现

java锁实现我们都将第三方库用作开发的正常部分。 通常&#xff0c;我们无法控制其内部。 JDK随附的库是一个典型示例。 这些库中的许多库都使用锁来管理争用。 JDK锁具有两种实现。 一个使用原子CAS样式指令来管理索赔过程。 CAS指令往往是最昂贵的CPU指令类型&#xff0c;并且…

2023年12月青少年机器人技术等级考试(五级) 实操试卷

主题&#xff1a;按键控制心形图案交互显示 器件&#xff1a;ESP32主控板1块&#xff0c;按键模块1个&#xff0c;8x8LED点阵1个&#xff0c;74HC595移位寄存器芯片&#xff08;或模块&#xff09;及相应辅件。以上模块也可使用分立器件结合面包板搭建。 任务要求&#xff1a; …

MATLAB正太分布函数

normcdf(x); %标准正态分布的分布函数。 normcdf(x,mu,sigma); %带平均值和方差μ和σ的正态分布&#xff0c;标准正态分布就是mu0,sigma1的特例。%例如>> normcdf(0,0,1)ans 0.5>> normcdf(inf,0,1)ans 1>> normcdf(-inf,0,1)ans 0

编写自己的工具箱 (一)

仔细想了一下 决定先解决一下调用的问题&#xff0c; 这样无比要解决异步获取 !function(){var requireOption window.requireOption || {path : ,};var windowIsLoad false;var key setInterval(function(){if( document.body || windowIsLoad ){windowIsLoad true;clearI…

ANTLR入门:构建一种简单的表达语言

这是该系列的第一篇文章。 本系列的目的是描述如何创建有用的语言和所有支持工具。 在本文中&#xff0c;我们将开始研究一种非常简单的表达语言。 我们将在语言沙箱中构建它&#xff0c;因此我们将其称为语言Sandy 。 我认为工具支持对于一种语言至关重要&#xff1a;因此&a…