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

Java 我们可以为多个包中的一组xsd生成JAXB类吗?,java,xml,jaxb,jaxb2,Java,Xml,Jaxb,Jaxb2,我有一个xsd,其中嵌入了几个子xsd(使用“xsd:include.”)(但每个xsd都属于同一个命名空间)。我被要求在独立的子包中生成jaxb类(每个子XSD有一个子包),而不是一个包 根据我到目前为止读到的内容,我们可以向这些单独的XSD添加jaxb:schemaBindings,并在单独的包中生成类,只要这些XSD属于不同的名称空间 但在我的例子中,我想做的是在属于相同名称空间的一组XSD的几个子包中创建类。你能帮我用JAXB做这个吗 编辑:我添加了更多关于我的问题的描述,以进一步澄清

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

根据我到目前为止读到的内容,我们可以向这些单独的XSD添加
jaxb:schemaBindings
,并在单独的包中生成类,只要这些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,然后有一个complexType定义,它使用了在B.xsd中定义的复杂类型

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

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

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

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


您可以从每个“包含的”模式中分别生成JAXB类,并将其放入单独的包中,并利用XJC工具中可用的插曲机制

示例(来自堆栈溢出的答案)


Hi@Blaise Doughan,感谢您的快速回复,但据我所知,以上所有链接都与在多个XSD中使用多个名称空间相关。可能是我遗漏了什么,你能检查一下我对我的帖子所做的编辑,并告诉我一些想法吗?谢谢。我试过使用。插曲文件。但是,当我使用之前创建的.eption文件(使用C.xsd)为B.xsd生成类时,它没有生成任何类。它甚至没有给我一个错误。你有没有找到解决这个问题的办法?我正在尝试实现类似的东西,并希望有一个解决方案