2017-01-20 45 views
0

我對JAXB的這兩個方面感到困惑。JAXBContext上下文路徑vs @XMLSeeAlso

據我明白了,通過如上下文路徑冒號分隔包名稱的JAXBContext的newInstance方法時,將JAXB所有這些包下的類添加到其範圍在像馬歇爾/和解組/驗證操作中使用.. 。等等。

@XmlSeeAlso註釋指示JAXBContext綁定類。我見過的所有例子都使用這個註釋來指定它的子類(我不明白爲什麼)。

下面是我的問題:

1-可如果由 註釋引用的類傳遞給JAXBContext而newInstance 方法包內的@XmlSeeAlso可以省略?

2-如果上述屬實,那麼爲什麼我們需要這個註釋在第一 地方,在那裏我們可以簡單地通過所有包含我們需要的newInstance 功能類的包?

3-如果上述是不是真的,可我們只使用包含傳遞給newInstance頂級 級類的包,並使用註釋@XmlSeeAlso引用這些類的所有 孩子?

+0

包路徑構造函數需要存在ObjectFactory或jaxb.in​​dex文件。如果你是從xsds編譯的話,這些都是免費的,但是如果你是手工製作的話,這會很痛苦。 '@ XmlSeeAlso'支持僅註釋jaxb的使用。 – teppic

回答

1

1-能如果由 註釋稱爲類是傳遞到的JAXBContext的newInstance 方法包內的@XmlSeeAlso被省略?

是,@XmlSeeAlso用於指示JAXBContext尋找那些不能以其它方式newInstance()加載的類。要讓JAXBContext瞭解所使用的子類,可以使用@XmlSeeAlso指定或通過newInstance方法中的所有子類。

2-如果上述屬實,那麼爲什麼我們需要這個註釋在 首位,在這裏我們可以簡單地通過所有包含 類,我們需要的功能的newInstance的包?

@XmlSeeAlso方法主要用於當您自己創建JAXB類時。如果您有XSD-> JAXB方法,那麼JAXBContext.newInstance()的所有包由:分開是首選。

+0

聽起來很合理..謝謝 – KAD