6

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

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

4

2 回答 2

4

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

于 2009-09-15T08:58:42.143 回答
0

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

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

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

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

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

于 2014-01-07T13:53:56.953 回答