2011-07-22 69 views
2

我有这个XSD:(片段)为什么JAXB将java对象映射到复杂类型而不是元素?

<xs:complexType name="complexA"> 
     <xs:sequence> 
      <xs:element ref="abstractA" minOccurs="0"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:element name="abstractA" abstract="true"/> 

    <xs:element name="concreteA" type="concreteComplexA" substitutionGroup="abstractA"/> 

    <xs:complexType name="concreteComplexA"> 
     <xs:attribute name="class" type="classId" use="required"/> 
     <xs:attribute name="property" type="namingId" use="required"/> 
     <xs:attribute name="value" type="xs:string" use="required"/> 
    </xs:complexType> 

JAXB输出一个名为concreteComplexA我可以把它输出concreteA名称,而不是类?

XSD是第三方,所以它不能被修改。

谢谢!

Udo。

回答

5

您可以使用外部绑定文件来控制生成的类的名称。举个例子看看我的回答类似的问题:

为什么JAXB的Java对象映射到元素的类型,而不是其原因是全球复杂类型(如你的榜样)可能有许多全球元素引用它:

<xs:element name="concreteA" type="concreteComplexA" substitutionGroup="abstractA"/> 
<xs:element name="anotherConcreteA" type="concreteComplexA" substitutionGroup="abstractA"/> 

<xs:complexType name="concreteComplexA"> 
    <xs:attribute name="class" type="classId" use="required"/> 
    <xs:attribute name="property" type="namingId" use="required"/> 
    <xs:attribute name="value" type="xs:string" use="required"/> 
</xs:complexType> 
+0

对另一个问题的答案可以正常工作!为什么不适合我? – ssedano

相关问题