2012-01-04 102 views
3

這裏是我的XML模式的提取物:JAXB生成的類:忽略中級班

<xsd:complexType name="MyType"> 
    <xsd:sequence> 
     <xsd:element name="Numbers"> 
      <xsd:complexType> 
       <xsd:sequence> 
        <xsd:element name="Number" minOccurs="1" maxOccurs="5" type="xsd:decimal"/> 
       </xsd:sequence> 
      </xsd:complexType> 
     </xsd:element> 
    </xsd:sequence> 
</xsd:complexType> 

JAXB生成我下面的類:

public class MyType { 
    protected MyType.Numbers numbers; 

    public static class Numbers { 
     protected List<BigDecimal> number; 
    } 
} 

但我想忽略這個中間類並有類似的東西:

public class MyType { 
    protected List<BigDecimal> number; 
} 

這是不知何故可能?

回答

3

是的,只有在外部插件的幫助下,JAXB纔有可能實現此功能,因爲此修改實際上是模型的更改。看看@XmlElementWrapper plugin

注意:同一個問題已在此論壇上提出(How generate XMLElementWrapper annotationDealing with JAXB Collections,JAXB List Tag creating inner class)。請先使用搜索。

+0

謝謝。但它不適合我。 「數字」現在是預期的列表。但是getter看起來像這樣:'public Numbers getNumbers {return numbers; }'所以生成的類將不會編譯... – Sebi 2012-01-05 08:04:00

+0

插件中可能存在一個錯誤:(對不起,我無法做太多的工作,因爲我沒有擁有該插件。請發佈您的問題生成的代碼:至少它會幫助別人誰會得到同樣的問題 – 2012-01-05 16:44:59

+1

問題是,我的一些XML元素在名稱中包含unterscores,例如'last_name'由於某些原因,我必須啓用'underscoreBinding =「 asCharInWord「,結果是該變量被命名爲lastName,getter的名稱爲getLast_name,因此該插件無法將該變量與其getter和setter方法進行匹配 – Sebi 2012-01-06 08:06:01