5

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

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

但就我而言,我想做的是在几个子包中为一组属于同一个命名空间的 xsd 创建类。你能帮我用 JAXB 做这件事吗?


编辑:我添加了更多关于我的问题的描述以进一步澄清它。

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

<?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 中,我用上述标题定义了一些元素(字符串类型)。

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

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

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

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

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

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

4

1 回答 1

3

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

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

于 2012-11-19T11:30:43.210 回答