1

我正在尝试*.xsd使用xjc代码生成工具从文件包中生成 java 源文件。

这些 *.xsd 文件中使用的命名空间如下:

http://www.domain.com/foo/bar.x  
http://www.domain.com/foo/bar.x.y  
http://www.domain.com/foo/bar.x.y.z  

XJC生产包如下:

com.domain.foo.bar.x 并将生成的 java 文件从“...x”和“...xy”xsd 命名空间放在那里

com.domain.foo.bar.x_y 并将生成的 java 文件从“...xyz”xsd 命名空间放在那里

我想在这里实现的是正确的:

com.domain.foo.bar.x  
com.domain.foo.bar.x.y  
com.domain.foo.bar.x.y.z package names  

这有可能吗?也许使用自定义JAXB绑定?我研究过 jaxb 自定义绑定文档,但不确定是否可行。

基本上我希望xjc同时处理“/”和“。” 作为包分隔符。

任何帮助表示赞赏。

阿达尔伯特

4

1 回答 1

5

使用jaxb:package自定义:

<jaxb:bindings
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    jaxb:version="2.1">

    <jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema">
        <jaxb:schemaBindings>
            <jaxb:package name="com.domain.foo.bar.x.y.z"/>
        </jaxb:schemaBindings>
    </jaxb:bindings>
</jaxb:bindings>

或者,您可以将命名空间重命名为http://www.domain.com/foo/bar/x/y/z.

于 2010-09-03T13:57:27.287 回答