java - 我们可以为多个包中的一组 xsd 生成 JAXB 类吗?

标签 java xml jaxb jaxb2

我有一个 xsd,其中嵌入了几个子 XSD(使用“xsd:include”。)(但每个 xsd 都属于相同的命名空间)。我被要求在单独的子包(每个子 XSD 一个子包)而不是一个包中生成 jaxb 类。

根据我目前阅读的内容,我们可以添加 jaxb:schemaBindings到这些单独的 xsds 并在单独的包中生成类,如果只有那些 xsds 属于不同的命名空间

但在我的例子中,我想做的是在几个子包中为一组属于相同命名空间的xsds 创建类。你能帮我用 JAXB 做这个吗?


编辑:我已经添加了一些关于我的问题的描述来澄清它。

我所有的 XSD 都有以下 header 。因此相同的命名空间

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:srm="http://www.mycompany.com/srm/"
    targetNamespace="http://www.mycompany.com/srm/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0" elementFormDefault="qualified"
    attributeFormDefault="unqualified" version="1.0">

假设我的架构文件名为 A.xsd、B.xsd 和 C.xsd。

  • 在 C.xsd 中,我定义了一些带有上述 header 的元素(字符串类型)。

  • 在 B.xsd 中,我使用“xsd:include”标签包含了 C.xsd,然后有一个使用 C.xsd 中定义的复杂类型的 complexType 定义。(具有与我上面提到的相同的 header )

  • 在 A.xsd 中,我使用“xsd:include”标签包含了 B.xsd,然后有一个使用 B.xsd 中定义的复杂类型的 complexType 定义。(具有与我上面提到的相同的 header )

我想像下面提到的那样生成 JAXB 类。

  • 要在 com.generate.packageA 包中生成与 A.xsd 相关的 JAXB 类。

  • 在 com.generate.packageB 包中生成与 B.xsd 相关的 JAXB 类。

  • 在com.generate.packageC包中生成与C.xsd相关的JAXB类。

最佳答案

您可以从每个“包含的”模式分别生成 JAXB 类到单独的包中,并利用 XJC 工具中可用的情节机制。

示例(来自 Stack Overflow 上给出的答案)

关于java - 我们可以为多个包中的一组 xsd 生成 JAXB 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13451349/

相关文章:

java - Ibatis 获取 hashmap 的集合

java - 您的内容必须有一个 id 属性为 'android.R.id.list' 错误的 ListView

android - 如何从android中的listview中删除一个项目

java - 使用 JAXB 解析器解析韩语字符串 작동불 时获取字符串 '???'

java - 无法使用 Jaxb 从 XML 中提取值

java - 是否有任何理由在 JSP 中执行服务器端逻辑而不是从外部类调用方法?

java - 在java中将对象转换为接口(interface)并返回

xml - 数千个文档(pdf 和/或 xml)的可搜索存档的最佳实践

java - 修复丢失的@XmlRootElement 问题后类名错误

java - 使用 Web 服务客户端 JAXB 生成的类作为 JPA 实体