[英]Can we generate JAXB classes for a set of xsd in multiple packages?
我有一个xsd,其中嵌入了几个子XSD (使用“xsd:include”。)(但每个xsd属于同一个命名空间 )。 我被要求在单独的子包 (每个子XSD一个子包)而不是一个包中生成jaxb类。
根据我到目前为止所读到的内容,我们可以将jaxb:schemaBindings
添加到这些单独的xsds中,并在单独的包中生成类,如果只有那些xsds属于不同的名称空间 。
但就我而言,我想要做的是在一些属于同一命名空间的xsds的子包中创建类。 你能帮我用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类,就像我在下面提到的那样。
JAXB类与A.xsd相关,用于在com.generate.packageA包中生成。
与B.xsd相关的JAXB类在com.generate.packageB包中生成。
与cxsd相关的JAXB类在com.generate.packageC包中生成。
您可以将每个“包含”模式中的JAXB类分别生成到单独的包中,并利用XJC工具中提供的剧集机制。
示例(来自Stack Overflow上给出的答案)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.