3

我有 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 注释的类?

4

1 回答 1

1

使用xjc:simple扩展

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

标准行为

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

了解更多信息

于 2013-06-04T15:58:22.063 回答