Bar*_*lom 12 jaxb class-names xjc
我有这个Maven"任务"使用JAXB从XSD文件生成Java类.
<!-- XML to Java classes -->
<plugin>
<groupId>com.sun.tools.xjc.maven2</groupId>
<artifactId>maven-jaxb-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<generatePackage>nl.compay.service</generatePackage>
<schemaDirectory>src/main/webapp/compay</schemaDirectory>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
对于XSD类型"User",它会生成一个名为"User"(duh)的类.但是,我还有一个名为"User"的JPA实体类(虽然在不同的包中).我可以更改上面的XML配置,让JAXB为生成的类添加"XML"之类的前缀吗?
xcu*_*cut 21
这是一个常见的要求.您可以通过提供额外的JAXB绑定文件来自定义JAXB如何将Schema类型名称转换为Java类名称.
这些文件通常以扩展名".xjb"结尾.您需要为架构创建一个,例如:
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc">
<jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema">
<jxb:schemaBindings>
<jxb:nameXmlTransform>
<jxb:typeName prefix="XML"/>
<jxb:anonymousTypeName prefix="XML"/>
</jxb:nameXmlTransform>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>
Run Code Online (Sandbox Code Playgroud)
完成之后,将xjb文件放在构建目录中的某个位置,并告诉Maven在翻译期间使用它:
<includeBindings>
<includeBinding>mybindings.xjb</includeBinding>
</includeBindings>
Run Code Online (Sandbox Code Playgroud)
这里有一个提示:如果你在一个包含空格的路径(例如"Documents and Settings\user\project"),那么JAXB将会出现奇怪的错误.
| 归档时间: |
|
| 查看次数: |
15654 次 |
| 最近记录: |