2011-07-22 113 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

相關問題