在本文中,我将演示如何利用– XJC扩展来重用以前从XML模式生成的类。 当其他XML架构导入XML架构并且您不想每次都生成相同的类时,这很有用。

导入的架构(Product.xsd)

以下XML模式代表有关产品的基本信息。 产品是此示例域中的常见概念,因此我决定定义一种可以被其他模式利用的表示形式,而不是让每个模式都定义自己的产品信息表示形式。

<?xml version="1.0" encoding="UTF-8"?>
<schemaxmlns="http://www.w3.org/2001/XMLSchema "targetNamespace=" http://www.example.org/Product "xmlns:tns=" http://www.example.org/Product "elementFormDefault="qualified"><element name="product"><complexType><sequence><element name="id" type="string"/><element name="name" type="string"/></sequence></complexType></element>
</schema>

由于多个XML模式导入Product.xsd,因此我们可以利用情节文件,以便与Product.xsd对应的类仅生成一次。 以下XJC调用演示了如何生成称为product的情节文件。 情节以及生成的类:

xjc -d out -episode product.episode Product.xsd

导入架构(ProductPurchaseRequest.xsd)

以下是导入Product.xsd的XML模式的示例:

<?xml version="1.0" encoding="UTF-8"?>
<schemaxmlns="http://www.w3.org/2001/XMLSchema "targetNamespace=" http://www.example.org/ProductPurchaseRequest "xmlns:tns=" http://www.example.org/ProductPurchaseRequest "xmlns:prod=" http://www.example.org/Product "elementFormDefault="qualified"><import namespace=" http://www.example.org/Product " schemaLocation="Product.xsd"/><element name="purchase-request"><complexType><sequence><element ref="prod:product" maxOccurs="unbounded"/></sequence></complexType></element>
</schema>

从XML模式生成类时,将引用从Product.xsd生成Java类时创建的情节文件。 如果我们未指定情节文件,则将为ProductPurchaseRequest.xsdProduct.xsd生成类:

另一个导入模式(ProductQuoteRequest.xsd)

以下是导入Product.xsd的XML模式的另一个示例:

<?xml version="1.0" encoding="UTF-8"?>
<schemaxmlns="http://www.w3.org/2001/XMLSchema "targetNamespace=" http://www.example.org/ProductQuoteRequest "xmlns:tns=" http://www.example.org/ProductQuoteRequest "xmlns:prod=" http://www.example.org/Product "elementFormDefault="qualified"><import namespace=" http://www.example.org/Product " schemaLocation="Product.xsd"/><element name="quote"><complexType><sequence><element ref="prod:product"/></sequence></complexType></element>
</schema>

同样,当我们从此XML模式生成类时,我们将引用从Product.xsd生成Java类时创建的情节文件。

xjc -d out ProductQuoteRequest.xsd -extension -b product.episode

它是如何工作的? (product.episode)

对于你们中的那些人来说,这很奇怪。 XJC生成的情节文件实际上只是一个用于自定义类生成的标准JAXB绑定文件。 生成的绑定/情节文件包含一些条目,这些条目告诉XJC此类型的类已经存在。 您可以手工编写此文件,但是XJC的-episode标志可以帮您完成。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bindings version="2.1" xmlns="http://java.sun.com/xml/ns/jaxb ">
<!--This file was generated by the JavaTM Architecture for XML Binding
(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 See
<a href=" http://java.sun.com/xml/jaxb "> http://java.sun.com/xml/jaxb </a>
Any modifications to this file will be lost upon recompilation of the
source schema.
Generated on: 2011.11.02 at 03:40:10 PM EDT -->
<bindings scd="x-schema::tns"
xmlns:tns=" http://www.example.org/Product ">
<schemaBindings map="false"/>
<bindings scd="tns:product">
<class ref="org.example.product.Product"/>
</bindings>
</bindings>
</bindings>

参考: Java XML和JSON绑定博客中的JCG合作伙伴 Blaise Doughan 重用了生成的JAXB类 。

相关文章 :

  • 使用JAXB从XSD生成XML
  • 将对象映射到多个XML模式–天气示例

翻译自: https://www.javacodegeeks.com/2011/12/reusing-generated-jaxb-classes.html

重用生成的JAXB类相关推荐

  1. jaxb 生成java类_重用生成的JAXB类

    jaxb 生成java类 在本文中,我将演示如何利用XJC扩展来重用以前从XML模式生成的类. 当其他XML架构导入XML架构并且您不想每次都生成相同的类时,这很有用. 导入的架构(Product.x ...

  2. jaxb-xjc.jar_使用xjc在一秒钟内生成您的JAXB类

    jaxb-xjc.jar 由于JAXB是JDK的一部分,因此它是处理XML文档最常用的框架之一. 它提供了一种从XML文档检索数据并将其存储到Java类的简便方法. 因为几乎每个Java开发人员都已经 ...

  3. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  4. java读取ES配置生成ES管理类,获取ES连接

    java读取ES配置生成ES管理类,获取ES连接 1.Elasticsearch是基于Lucene开发的一个分布式全文检索框架,向Elasticsearch中存储和从Elasticsearch中查询, ...

  5. eclipse从数据库逆向生成Hibernate实体类

    2019独角兽企业重金招聘Python工程师标准>>> 做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说 ...

  6. Android Apt失效:找不到Apt生成的对应类

    Android Apt失效:找不到Apt生成的对应类 参考自 Android Gradle由4.x升级至5.0导致Apt项目失效 高级开发必须理解的Java中SPI机制 - 简书 Upgrading ...

  7. 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )

    文章目录 I . 视图绑定组件简介 II . 视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) III . 视图绑定组件启用 IV . 定制视图绑定 ( 启用视 ...

  8. 解析利用wsdl.exe生成webservice代理类的详解

    利用wsdl.exe生成webservice代理类: 根据提供的wsdl生成webservice代理类 1.开始->程序->Visual Studio 2010 命令提示 2.输入如下红色 ...

  9. spring service ,controller反向代理生成AOP代理类流程

    一.在applicationContext的beanFactory.preInstantiateSingletons方法中,会初始化所有的单例BEAN. 二. 1.AbstractAutowireCa ...

最新文章

  1. Error:(17, 0) SDK location not found. Define location with sdk.dir in the local.properties file or w
  2. jieba库 python2.7 安装_Python中文分词工具大合集:安装、使用和测试
  3. JUST技术:空间连接运算与空间索引
  4. Java路径问题最终解决方案
  5. 数据库-MySQL-数据库设计-外键
  6. 在vs2008工程中制作cab包
  7. html新标准,HTML 5新标准将会在2022年正式发布
  8. [Vue warn]: Error in mount hook: “TypeError: Cannot read properties of null (reading ‘getAttribute‘)
  9. Android鞋店管理系统,鞋店进销管理系统下载
  10. 计算机操作系统之CPU架构和原理(二)
  11. Microsoft SQL Server 2008R2企业版64位(带密钥)
  12. apply update from sdcard
  13. C/C++函数调用约定(基于X86架构下)
  14. HTML和CSS中的图像与背景图像
  15. 用JAVA编写MD5大写32位加密
  16. 阿里云两分钟一键极速搭建个人网盘
  17. IOS9禁用UIWebView的放大镜
  18. 医学影像:静息态fmri数据的预处理
  19. OpenGL ES EGL eglQueryContext
  20. WPF的Effect效果

热门文章

  1. maven配置junit5_JUnit 5和Selenium –改善项目配置
  2. spring使用自定义注解_用Spring组成自定义注释
  3. aws eks_在生产中配置和使用AWS EKS
  4. java监控数据库性能_Java:GraalVM数据库流性能
  5. java终结器_Java的终结器仍然存在
  6. vue.jsr入门_JSR 365更新:深入CDI 2.0
  7. 怎么运行aws的示例程序_使Spring Boot应用程序在AWS上无服务器运行
  8. 注释嵌套注释_DIY注释
  9. Java 14:有用的NullPointerException消息
  10. 成为Java流大师–第1部分:创建流