2014-03-24 43 views
1

我正在爲我的公司開發一個java應用程序,其中包括我將schema作爲輸入的XML。Jaxb爲元素屬性創建BigInteger變量

IDE:的NetBeans 8.0的Java :JDK 1.6(我知道,我知道...)

在架構中的元素類型中的一個具有需要選用有兩個屬性:

<xs:complexType name="InsertType"> 
    <xs:attribute name="ID" type="NameType" use="required" /> 
    <xs:attribute name="Priority" type="xs:int" use="required" /> 
</xs:complexType> 

現在這個複雜類型生成的類看起來是這樣的:

public class InsertType { 

    @XmlAttribute(name = "ID") 
    protected String id; 
    @XmlAttribute(name = "Priority") 
    protected BigInteger priority; 
    ... 
} 

爲XML命名約定屬性名一旁(我剛剛得到這個架構和命名約定只是Ø我的反饋話題),爲什麼我在這裏得到「BigInteger」作爲「優先級」的數據類型? 我收到的原始模式看起來像這樣的「優先級」

<xs:attribute name="Priority" type="xs:integer" use="optional"> 

這樣我就可以明白爲什麼XS:整數加「可選」將觸發「的BigInteger」的一代,但我已經變型爲「XS:INT」並用於必需的,我收集的是相當於「minOccurs ='1'」,將(希望)解決問題的元素。

有沒有人有一個想法接下來我應該看看?我在這裏感到茫然,我發現所有指向「xs:int」而不是「xs:integer」和「minOccurs ='1」的用法的谷歌匹配。

謝謝

編輯: 我忘了提,這可能是必要的,這是從兩個模式,一個包括其他創建的綁定。 第一個或主要模式描述了XML的整體架構。第二個主要包含所有使用的類型定義。 由於第一個包含類型定義,所以這兩個之間的拆分不是必需的。 但是,它可以與上述問題有任何關係?

+0

是否有在任何地方定義的Jaxb綁定定義? – Alvin

+0

在我的netbeans項目中,是的。它指向主模式。在XML模式內部,沒有提及任何jaxb。 –

回答

1

好的,在再次完成所有細節後,我自己找到了答案。 我想知道爲什麼我的屬性更改沒有反映在生成的類中,所以我也更改了註釋。 即使在刪除我的項目的構建目錄後,這些更改也未反映在生成的類中。

解決方案很簡單(我真的很尷尬地承認)是刪除Netbeans緩存文件夾(在C:\ Users \\\\ Netbeans \ Cache \ 8.0中找到),重新啓動netbeans並讓類再次生成。