【问题标题】:Wrong class name after fixing missing @XmlRootElement issue修复缺少的@XmlRootElement 问题后错误的类名
【发布时间】:2013-05-31 01:44:40
【问题描述】:

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

【问题讨论】:

    标签: java xml jaxb xsd


    【解决方案1】:

    使用xjc:simple 扩展

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

    标准行为

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

    更多信息

    【讨论】:

    • 你的灵魂没有像我预期的那样工作 - xjc 生成类名称和扩展类名称的类类型。
    猜你喜欢
    • 2020-06-27
    • 2022-01-24
    • 2013-09-02
    • 2011-11-26
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2020-11-18
    相关资源
    最近更新 更多