热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

xsd生成java类_如何从Java类生成XSD

xsd生成java类Inlastfewposts,welearnedaboutJavaJAXBandhowtogeneratejavaclassfromXSD.Todaywewil

xsd 生成 java 类

In last few posts, we learned about Java JAXB and how to generate java class from XSD. Today we will learn how to generate XSD from java classes.

在最近的几篇文章中,我们了解了Java JAXB以及如何从XSD生成Java类 。 今天,我们将学习如何从Java类生成XSD。

从Java类生成XSD (Generate XSD from Java Class)

We will use JAXB-2 Maven Plugin in a maven project to generate XSD from java classes.

我们将在maven项目中使用JAXB-2 Maven插件从Java类生成XSD。

  • JAXB2 Maven Plugin uses JAXB SchemaGenerator utility to generate XSD from java classes.

    JAXB2 Maven插件使用JAXB SchemaGenerator实用程序从Java类生成XSD。
  • Java classes should have JAXB annotations to be used by this plugin.

    Java类应具有此插件要使用的JAXB批注。
  • Minimum java version required is Java 5

    所需的最低Java版本是Java 5

First create a new maven project, you can give any name, group id and artifact id you want. Once we will build our project, it will generate XSD classes in target/generated-resources/schemagen directory.

首先创建一个新的Maven项目,您可以提供所需的任何名称,组ID和工件ID。 构建项目后,它将在target/generated-resources/schemagen目录中生成XSD类。

After build, our project structure will look like below image.

构建后,我们的项目结构将如下图所示。

Here is the final pom.xml file we have:

这是我们拥有的最终pom.xml文件:

4.0.0jaxb-schemagenjaxb-schemagen0.0.1-SNAPSHOTjavax.xml.bindjaxb-api2.1org.apache.maven.pluginsmaven-compiler-plugin2.5.1org.codehaus.mojojaxb2-maven-plugin1.5schemagenschemagenhttps://www.example.org/employeeempnsemployee.xsdhttps://www.example.org/addressaddrnsaddress.xsdcom/journaldev/bean/*true

Few things to notice are jaxb dependency, schemagen execution goal and transformSchema configuration. transformSchema configuration is used to specify the XSD file name generated and namespace prefix to be used in the XSD file.

很少注意的是jaxb依赖关系, schemagen执行目标和transformSchema配置。 transformSchema配置用于指定生成的XSD文件名和要在XSD文件中使用的名称空间前缀。

Here are the java classes we have that will be used to generate XSD.

这是我们将用于生成XSD的Java类。

Employee.java

Employee.java

package com.journaldev.bean;import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;@XmlType(namespace = "https://www.example.org/employee")
public class Employee {private String name;private int id;private String role;private Address address;public String getName() {return name;}public void setName(String name) {this.name = name;}@XmlAttributepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getRole() {return role;}public void setRole(String role) {this.role = role;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}
}

Notice the XmlType annotation with namespace used for the class and XmlAttribute for the field id. This class will generate employee.xsd schema once we build the project.

请注意, XmlType批注带有用于类的名称空间,而XmlAttribute用于字段ID。 一旦我们构建项目,该类将生成employee.xsd模式。

As you can see that it has a field Address that is another custom class, so we need to annotate this class also for successful schema generation.

如您所见,它的字段Address是另一个自定义类,因此为了成功生成模式,我们还需要注释该类。

Here is the address class with jaxb annotations.

这是带有jaxb批注的地址类。

Address.java

Address.java

package com.journaldev.bean;import javax.xml.bind.annotation.XmlType;@XmlType(namespace = "https://www.example.org/address")
public class Address {private String city;private int zip;private String addressLine1;private String addressLine2;public String getCity() {return city;}public void setCity(String city) {this.city = city;}public int getZip() {return zip;}public void setZip(int zip) {this.zip = zip;}public String getAddressLine1() {return addressLine1;}public void setAddressLine1(String addressLine1) {this.addressLine1 = addressLine1;}public String getAddressLine2() {return addressLine2;}public void setAddressLine2(String addressLine2) {this.addressLine2 = addressLine2;}}

This class will generate address.xsd because it’s name is matched in transformSchema in pom.xml file.

此类将生成address.xsd,因为其名称在pom.xml文件的transformSchema中匹配。

Our project setup is ready, just build the project using command mvn clean install and the XSD files will be generated. For my project, generated XSD files are as below.

我们的项目设置已准备就绪,只需使用命令mvn clean install构建项目,然后将生成XSD文件。 对于我的项目,生成的XSD文件如下。

employee.xsd

employee.xsd



address.xsd

address.xsd



That’s all for generating XSD from java class. It’s very simple and great way for java class to XSD generation. I hope you will find it useful and easy to understand.

这就是从java类生成XSD的全部。 这是将Java类生成XSD的非常简单且绝佳的方法。 我希望您会发现它有用且易于理解。

翻译自: https://www.journaldev.com/1316/generate-xsd-from-java-class

xsd 生成 java 类



推荐阅读
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
品花人生1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有