2009-09-14 90 views

回答

3

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

0

您的模式中有元素还是只有类型?这通常是原因。

0

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

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

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

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

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