2010-08-11 55 views
1

我正尝试使用xjc代码生成工具从包中生成一个包*.xsd文件中的java源文件。XJC生成的命名空间

在这些*使用的命名空间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和地点由 “... XYZ” XSD命名空间有

生成的Java文件

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

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

这在某种程度上可能吗?也许使用定制的JAXB绑定?我研究过jaxb自定义绑定文档,但我不确定是否可能。

基本上我想xjc同时对待“/”和“。”。作为包分隔符。

任何帮助表示赞赏。

阿德尔伯特

+0

我已经设法解决这个问题的一部分,为特定的XSD文件提供自定义绑定 – 2010-08-12 17:56:36

回答

6

使用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