Regex 有没有一种方法可以基于正则表达式为所有XSD创建JAXB绑定规则?(与每个架构文件的规则相反)
我正在使用xjc(jaxb2 maven插件)从几个XSD文件生成POJO。毫不奇怪,如果我将生成的所有文件放在一个包中,会出现类冲突。默认情况下,xjc将使用名称空间作为包名 例: 我意识到我可以使用xjc:bindings单独指定哪个名称空间成为哪个包,但这会变得非常乏味。有没有办法为所有XSD的绑定指定规则或正则表达式 例如:namespace./schema/(.)/(*)成为包:myDefaultPackage.$1.$2 例如如下所示:Regex 有没有一种方法可以基于正则表达式为所有XSD创建JAXB绑定规则?(与每个架构文件的规则相反),regex,jaxb,Regex,Jaxb,我正在使用xjc(jaxb2 maven插件)从几个XSD文件生成POJO。毫不奇怪,如果我将生成的所有文件放在一个包中,会出现类冲突。默认情况下,xjc将使用名称空间作为包名 例: 我意识到我可以使用xjc:bindings单独指定哪个名称空间成为哪个包,但这会变得非常乏味。有没有办法为所有XSD的绑定指定规则或正则表达式 例如:namespace./schema/(.)/(*)成为包:myDefaultPackage.$1.$2 例如如下所示: <jaxb:bindings schem
<jaxb:bindings schemaLocation="*.xsd" node="/xsd:schema[@value=.*/schema/(.*)/(.*)">
<jaxb:schemaBindings>
<jaxb:package name="com.domain.$1.$2"/>
</jaxb:schemaBindings>
</jaxb:bindings>
有没有办法为所有XSD的绑定指定规则或正则表达式
不,你不能使用正则表达式或类似的。但我认为您应该能够编写自己的
com.sun.xml.bind.api.impl.namecoverter
实现,并通过xjc插件在com.sun.tools.xjc.Options.setnamecoverter(…)
中注册它。不幸的是,这正是我所期望的。我认为我自己的名称转换器对于我的需要(以及需要支持它的人)来说太先进了。我会在我的绑定中进行大量剪切和粘贴。
<jaxb:bindings schemaLocation="*.xsd" node="/xsd:schema[@value=.*/schema/(.*)/(.*)">
<jaxb:schemaBindings>
<jaxb:package name="com.domain.$1.$2"/>
</jaxb:schemaBindings>
</jaxb:bindings>