JAXB XJC 代码生成 - ObjectFactory 类不完整

发布于 2024-08-05 06:26:35 字数 157 浏览 9 评论 0原文

我使用 XJC 命令行工具从 XSD 架构文件生成 Java 类。 ObjectFactory 类生成不完整的内容。它生成没有 JAXBElement的创建方法。 createType 装饰。

这可能是什么原因呢? 问候 多米尼克

I generate Java classes from my XSD schema file using XJC command line tool. The ObjectFactory class generates incomplete content. It generates creation methods without JAXBElement<Type> createType decoration.

What may be the reason of this?
Regards
Dominik

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

∞琼窗梦回ˉ 2024-08-12 06:26:35

只有 JAXB2 XJC 生成的绑定中的某些类型需要 JAXBElement 包装器。那些具有 @XMLRootElement 注释的类型不需要包装器,因此对象工厂不会生成包装器。

Only some types in a JAXB2 XJC-generated binding need JAXBElement wrappers. Those types that have the @XMLRootElement annotation do not need the wrapper, and so the object factory does not generate one.

扛刀软妹 2024-08-12 06:26:35

仅当您的 XSD 包含复杂类型定义和使用具有相同名称的复杂类型的单独元素定义时,JAXB 才会生成从对象实例创建 JAXBElement 的工厂方法,例如:

<complexType name="my-type">
   ...
</complexType>

<element name="my-type" type="tns:my-type"/>

在这种情况下,JAXB 不会使用以下注释来注释生成的类@XmlRootElement 注释,但将提供从对象实例创建 JAXBElement 所需的工厂方法。这样,您可以轻松地将非根元素类型的实例序列化为根元素。

因此,除了您打算用作顶级元素的任何复杂类型定义之外,您还应该添加一个具有相同名称的“元素”声明,并且 ObjectFactory 将生成预期的工厂方法。

JAXB generates factory methods that create a JAXBElement from an object instance only if your XSD contains both a complexType definition and a separate element definition using that complexType WITH THE SAME NAME, for example:

<complexType name="my-type">
   ...
</complexType>

<element name="my-type" type="tns:my-type"/>

In this case, JAXB won't annotate the generated class with an @XmlRootElement annotation, but will provide the factory methods you need to create a JAXBElement from the object instance. That way, you can serialize instances of non-root-element types as root elements easily.

So, you should just add an "element"-declaration with the same name in addition to any complexType definition you intend to be used as a top-level element, and ObjectFactory will generate the expected factory methods.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文