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