jaxb需要jar包吗_JAXB –不需要注释
jaxb需要jar包吗
领域模型
在此示例中,我将使用以下域模型。 注意如何没有任何类型的注释。
顾客
在此示例中, 客户是根对象。 通常,我们将使用@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包吗
jaxb需要jar包吗_JAXB –不需要注释相关推荐
- eclipse查看jar包中class的中文注释乱码问题的解决
1,问题来源是在eclipse中直接查看springside的class(由eclipse自动反编译)里面注释的乱码问题: Preferences-General-Workspace-Text fil ...
- Android NDK开发:打包so库及jar包供他人使用
文章目录 一.目标及方式 二.新建调用方工程 三.新建库module 四.为库模块添加c++支持 4.1 准备CMakeLists文件 4.2 修改sdk的gradle脚本 4.3 编写c++及jav ...
- 项目常用工具类整理(五)--jar包整理
2019独角兽企业重金招聘Python工程师标准>>> SSH框架: Struts1.2.9+Spring2.5+Hibernate3.2 说明:commons的几个包算是公用Jar ...
- java jar包收集
activation~与javaMail有关的jar包,使用javaMail时应与mail.jar (mail.jar和activation.jar)一起加入到lib中去,具体负责mail的数据源和类 ...
- 2. Hibernate目录结构和基础JAR包介绍
一.下载 1. 官网: http://hibernate.org/ https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.4 ...
- Java常用开源jar包
Java常用开源jar包 转:http://blog.csdn.net/kevingao/article/details/8125683 activation~与javaMail有关的jar包,使用j ...
- 手动将web项目的class文件打成jar包,手动打jar包,java -cvf,IDE打包底层指令
手动将web项目的class文件打成jar包. 我们的项目在使用IDE进行编译后,在项目的target目录下将会生成class文件.我们可以将class文件打成jar包. 使用的到命令为: 在targ ...
- 将jar包部署在docker上,将jar包打成镜像,使用docker部署jar包
假设你已经准备好以下东西,即可进行服务部署 一台安装好docker的linux服务器(安装docker见安装docker) 准备好的jar包 接下来开始吧! 将jar包上传至服务器(建好文件夹存放以方 ...
- jar包升级部署到服务器详细流程,将服务部署在linux中
假设你已经准备好以下东西,即可进行服务部署 一台服务器(云服务器或虚拟机皆可) 已安装好的jdk 1.8 + 的环境(可自行百度) 打好的jar包(maven打jar包) 1. 在服务器中新建好你的项 ...
最新文章
- 5-flutter 布局和列表
- 大厂需要这样的Java工程师
- Android Sensors (2) 传感器API的使用
- VTK:vtkAnnotatedCubeActor用法实战
- tmeminifile and tinifile
- 17_python基础—面向对象-继承
- sqlyog备份数据和导入备份数据
- Netty源代码学习——EventLoopGroup原理:NioEventLoopGroup分析
- pytorch nonzero_[深度学习框架]PyTorch常用代码段
- 学术壁报模板_电子壁报 | 中华医学会第十四次全国妇产科学学术会议
- MATLAB r2016a 配置 VLFeat 库教程(超详细,一看必会)
- 精简版oracle客户端程序
- js 导出 excel
- 历史大盘跌停记录,2016大盘跌停原因
- 多级评论回复功能(纯前端,未连数据库)
- 【摸鱼神器】— 五子棋
- R语言交叉验证(详细)
- Ubuntu音乐播放器
- LeetCode之单词搜索(回溯法求解)
- 高通batterydata电池曲线数据学习