2012-09-10 27 views
2

我有一個外部提供的XSD,其中有許多元素都是相同的,並且表示具有可選貨幣屬性的價格。是否可以爲相同的xs:simpleContent元素創建單個類映射?

<xs:complexType name="someType"> 
    <xs:sequence> 
    <xs:element name="rrp" minOccurs="0"> 
     <xs:complexType> 
     <xs:simpleContent> 
      <xs:extension base="xs:decimal"> 
      <xs:attribute name="currency" type="xs:string"/> 
      </xs:extension> 
     </xs:simpleContent> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="whs" minOccurs="0"> 
     <xs:complexType> 
     <xs:simpleContent> 
      <xs:extension base="xs:decimal"> 
      <xs:attribute name="currency" type="xs:string"/> 
      </xs:extension> 
     </xs:simpleContent> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 

我想這將變成一個普通的類,而不是大量的靜態類,這是可能與XJB映射文件?

回答

2

我不知道用JAXB註釋做這件事的方法,但這並不是說這是不可能的。也許有人會給你一個更好的答案。

解決此問題的理想方法顯然是更改XSD,以便您具有「PriceWithcurrency」xs:complexType定義,並且每個元素都聲明爲該類型。但你說過你不能改變它。

儘管我會嘗試一件事,那就是創建一個XSD的變體,並且爲它保留相同的名稱空間定義並生成jaxb類。它應該與使用原始XSD生成的XML文檔實例一起工作。

+0

感謝Patrice,我確實一直在修改供應商提供的XSD,儘管它不是我希望依賴的東西,好像XSD改變它將會中斷,如果不再更新一次;這涉及記錄我爲團隊瞭解的更改等。這些XSD已被註釋爲使用工具創建的,您會認爲該工具首先會警告不要使用匿名類型。如果我很快沒有聽到轉變的方式,我會接受你的回答,謝謝。 –

相關問題