我使用 XJC 命令行工具从我的 XSD 模式文件生成 Java 类。ObjectFactory 类生成不完整的内容。它生成没有JAXBElement<Type> createType
装饰的创建方法。
这可能是什么原因?问候多米尼克
只有 JAXB2 XJC 生成的绑定中的某些类型需要JAXBElement
包装器。那些具有@XMLRootElement
注释的类型不需要包装器,因此对象工厂不会生成包装器。
仅当您的 XSD 同时包含 complexType 定义和使用具有相同名称的 complexType 的单独元素定义时,JAXB 才会生成从对象实例创建 JAXBElement 的工厂方法,例如:
<complexType name="my-type">
...
</complexType>
<element name="my-type" type="tns:my-type"/>
在这种情况下,JAXB 不会使用 @XmlRootElement 注释对生成的类进行注释,但会提供从对象实例创建 JAXBElement 所需的工厂方法。这样,您可以轻松地将非根元素类型的实例序列化为根元素。
因此,除了您打算用作顶级元素的任何 complexType 定义之外,您应该只添加一个具有相同名称的“元素”声明,ObjectFactory 将生成预期的工厂方法。