1

我注意到定义了 simpleType 或 complexType 并且在模式文件中的多个元素的声明中使用了这些类型,simpleType 或 complexType 生成了一个方法签名作为“JAXBElemet createXyz(Xyz xyz)”。但我不确定这是否是根本原因。

4

1 回答 1

1

为了将对象编组为 XML,JAXB 需要知道要使用的 XML 元素的名称。它可以从 (a)@XmlRootElement类上的注释或 (b) 通过将对象包装在JAXBElement包含元素名称的 a 中来获取此信息。

如果 XJC 生成一个没有 的类@XmlRootElement,那么该类的工厂方法ObjectFactory将改为使用JAXBElement包装器,以提供所需的编组信息。

然后,您可能会问为什么 XJC 决定@XmlRootElement为某些类而不是其他类生成,但是之前在 SO 上已经问过这个问题,所以去看看那个。

于 2011-03-15T08:39:34.750 回答