2010-08-11 54 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