Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 有没有一种方法可以基于正则表达式为所有XSD创建JAXB绑定规则?(与每个架构文件的规则相反)_Regex_Jaxb - Fatal编程技术网

Regex 有没有一种方法可以基于正则表达式为所有XSD创建JAXB绑定规则?(与每个架构文件的规则相反)

Regex 有没有一种方法可以基于正则表达式为所有XSD创建JAXB绑定规则?(与每个架构文件的规则相反),regex,jaxb,Regex,Jaxb,我正在使用xjc(jaxb2 maven插件)从几个XSD文件生成POJO。毫不奇怪,如果我将生成的所有文件放在一个包中,会出现类冲突。默认情况下,xjc将使用名称空间作为包名 例: 我意识到我可以使用xjc:bindings单独指定哪个名称空间成为哪个包,但这会变得非常乏味。有没有办法为所有XSD的绑定指定规则或正则表达式 例如:namespace./schema/(.)/(*)成为包:myDefaultPackage.$1.$2 例如如下所示: <jaxb:bindings schem

我正在使用xjc(jaxb2 maven插件)从几个XSD文件生成POJO。毫不奇怪,如果我将生成的所有文件放在一个包中,会出现类冲突。默认情况下,xjc将使用名称空间作为包名

例:

我意识到我可以使用xjc:bindings单独指定哪个名称空间成为哪个包,但这会变得非常乏味。有没有办法为所有XSD的绑定指定规则或正则表达式

例如:namespace./schema/(.)/(*)成为包:myDefaultPackage.$1.$2

例如如下所示:

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