我注意到定义了simpleType或complexType,并且在模式文件中的多个元素的声明中使用了类型,simpleType或complexType生成方法签名为“JAXBElemet createXyz(Xyz xyz)”。但我不确定这是否是根本原因。
答案 0 :(得分:1)
为了将对象编组为XML,JAXB需要知道要使用的XML元素的名称。它可以从(a)类的@XmlRootElement
注释中获得,或者(b)将对象包装在包含元素名称的JAXBElement
中。
如果XJC生成的类没有@XmlRootElement
,那么ObjectFactory
中该类的工厂方法将改为使用JAXBElement
包装器,以提供所需的编组信息。
然后你可以问为什么XJC决定为某些课程而不是其他课程生成@XmlRootElement
,但之前已经问过,所以去看看那个。