修复丢失的@XmlRootElement问题后错误的类名

时间:2013-06-04 15:22:20

标签: java xml jaxb xsd

我有xsd,即使用着名的惯例:

<xsd:element name="name" type="Type">
<!-- ... -->
</xsd:element>

<xsd:complexType name="Type">
<!-- ... -->
<xsd:complexType/>

正因为如此,当我使用xjc工具生成类时,我没有@XmlRootElement注释。 我在stackoverflow上找到了一个解决方案,即使用xjc的简单绑定:

<jxb:bindings schemaLocation="myschema.xsd" node="/xs:schema">
   <jxb:globalBindings>
      <xjc:simple/>
   </jxb:globalBindings>
</jxb:bindings>

当我使用带有-extension -b标志的xjc生成类时,我得到了XmlRootElement注释。问题是,该类的名称不再正确。我希望有一个“类型”类使用“”作为根元素。但是我收到了“姓名”这个课程。

我在这个问题上花了差不多2天......

有没有办法用正确的名称和XmlRootElement注释创建类?

1 个答案:

答案 0 :(得分:1)

使用xjc:simple扩展程序

生成的类名称不正确,只是类名是从全局元素而不是复杂类型派生的。

标准行为

如果没有xjc:simple扩展名,则与命名复杂类型对应的全局元素将在@XmlElementDecl类上具有相应的ObjectFactory注释。因此,在编组和解组期间,对象将被包装在JAXBElement的实例中。

了解更多信息