我正在尝试从几个特定的XSD生成Java类xjc.这些模式有一些共同的定义,因此它们导入了许多常见的XSD.特别是,它们可以包括零到所有常见的XSD.
我想生成从特定XSD到特定包的所有类,但是将公共模式的生成类保存在公共包中,因此不会对源树中的每个特定模式重复这些类.
我已经了解到,自定义绑定可用于在每个模式的基础上指定包,例如:
<jxb:bindings schemaLocation="common1.xsd" node="/xsd:schema">
<jxb:schemaBindings>
<jxb:package name="mypackage.commonclasses"/>
</jxb:schemaBindings>
</jxb:bindings>
Run Code Online (Sandbox Code Playgroud)
我有以下结构:
schemas
| - common
| | - common1.xsd --> XSD with common types #1
| | - ...
| | - commonN.xsd --> XSD with common types #N
| | - commonBindings.xjb --> Defines package "mypackage.commons" for common*.xsd
| - specific1
| | - specific1.xsd --> Includes ../common/common{1-N}.xsd
| | - specific1.xjb --> Defines package "mypackage.specific1" for specific1.xsd
| - specificN
| | - specificN.xsd --> …Run Code Online (Sandbox Code Playgroud) 我有几个重用相同实体的XSD.例如,既为中的XSD ProductPurchaseRequest.xsd和ProductQuoteRequest.xsd都有一个<product>在他们的标签来描述产品的问题.出于这个原因,我创建了一个Product.xsd文件来定义 <product>标签和两者,ProductPurchaseRequest.xsd并用` ProductQuoteRequest.xsd导入Product.xsd.
我想使用Castor从这些XSD生成Java类,并且它们都使用相同的类来表示,Product以便我可以重用相同的逻辑将它们映射到我们的模型ProductModel类.
Castor可以这样做吗?如果是这样,它的Ant任务语法是什么.如果没有,或许JAXB可能是更好的选择吗?