2013-12-11 116 views
1

我有一個XSD如下問題與XJC生成的類

<xs:element name="package"> 
    ..... 
     <xs:element name="package"> 
     ..... 
      <xs:element name="package"> 
      ...... 
      </xs:element> 
     </xs:element> 
    </xs:element> 

所有三個包有不同的領域。我正在嘗試使用XJC來生成類。它給內部類的代碼是compilatin錯誤,因爲它裏面有相同的名字。 我嘗試使用bindings.My綁定文件重命名類是

<jaxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    version="2.1"> 
    <jaxb:globalBindings/> 
    <jaxb:bindings schemaLocation="CoveragesWithIIRolesresponse.xsd"> 
      <jaxb:bindings node="//xs:element[@name='package']"> 
        <jaxb:class name="Fault2"/> 
      </jaxb:bindings> 
    </jaxb:bindings> 
</jaxb:bindings> 

這是給錯誤說太多的目標節點。如何解決這個問題 請幫我在這

更新:如果我把multiple="true"在我的綁定文件被替換從而導致同樣的編譯錯誤的所有地方

回答

1

你覺得它是個好xsd設計就是這樣做的。 也許最好是定義一個名爲「package」的複雜類型,其中所有字段都標記爲選項,並且只在主元素中使用元素引用。 「MainPackage」或有什麼

在這種情況下,JaxBinding只爲類「package」創建一個類。

看看薩拉米切片或威尼斯盲設計。 這些xsd設計與JaxB一起工作得非常好,因爲它們更多地涉及面向對象的結構及其關聯。

也許另一種解決方案是使用包元素的不同目標命名空間。 在這種情況下,Package類型的限定類名稱根據名稱空間而變化。但在我看來,這也不是一個好設計。