我有一个 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/