我的项目中有3个XSD。命名空间“ A”中的两个,命名空间“ B”中的一个。
我想将XSD-1和XSD-2(相同的名称空间)生成到一个包中。
然后将XSD-3生成到另一个包中。
我正在尝试通过bindings.xjb文件执行此操作。
如果我声明
<jxb:bindings schemaLocation="xsd1-namespaceA.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdPrimary" />
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="xsd2-namespaceA.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdPrimary" />
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="xsd3-namespaceB.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdSecondary" />
</jxb:schemaBindings>
</jxb:bindings>
然后我得到错误:
com.sun.istack.SAXParseException2: Multiple <schemaBindings> are defined for the target
namespace "http://www.jeff-test.org/namespaceA/"
如果删除绑定文件中的前两个条目,则生成工作,但是它将我的所有类都放在名称空间A的名为“ jeff-test.namespaceA”的包中,并将所有来自名称空间B的包放在“ com.xsdSecondary”包中。
我希望将所有从名称空间-A的类放入一个程序包,并将所有从名称空间-B的所有类导入另一个程序包。
这可能吗?
最佳答案
为目标名称空间“ http://www.jeff-test.org/namespaceA/”定义了多个
如果我删除绑定文件中的前两个条目,则生成工作正常,但是它将我所有的类都放在一个名为namespaceA的名为“ jeff-test.namespaceA”的包中。
只需删除namespaceA
的条目之一即可。删除两者的逻辑是什么?
<jxb:bindings schemaLocation="xsd1-namespaceA.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdPrimary" />
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="xsd3-namespaceB.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdSecondary" />
</jxb:schemaBindings>
</jxb:bindings>
每个名称空间都将
schemaBindings
视为一次,绑定到哪个架构文件都没有关系(只要该文件是编译的一部分)。