我有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注释创建类?
答案 0 :(得分:1)
使用xjc:simple
扩展程序
生成的类名称不正确,只是类名是从全局元素而不是复杂类型派生的。
标准行为
如果没有xjc:simple
扩展名,则与命名复杂类型对应的全局元素将在@XmlElementDecl
类上具有相应的ObjectFactory
注释。因此,在编组和解组期间,对象将被包装在JAXBElement
的实例中。
了解更多信息