gpt4 book ai didi

jaxb - 为 JAXB 生成的类添加前缀

转载 作者:行者123 更新时间:2023-12-04 00:40:58 27 4
gpt4 key购买 nike

我有这个 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>

对于 XSD 类型“User”,它会生成一个名为“User”的类 (duh)。但是,我还有一个名为“User”的 JPA 实体类(尽管在不同的包中)。
我可以更改上面的 XML 配置,让 JAXB 在生成的类前面加上“XML”之类的前缀吗?

最佳答案

这是一个常见的要求。您可以通过提供一个附加的 JAXB 绑定(bind)文件来自定义 JAXB 如何将模式类型名称转换为 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>

完成之后,将 xjb 文件放在构建目录中的某个位置,并告诉 Maven 在翻译过程中使用它:
<includeBindings>
<includeBinding>mybindings.xjb</includeBinding>
</includeBindings>

这里有一个提示:如果您在包含空格的路径中(例如“Documents and Settings\user\project”),那么 JAXB 将因奇怪的错误而崩溃。

关于jaxb - 为 JAXB 生成的类添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/892298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com