2013-12-10 19 views
4

我是JAXB的新手,並繼承了一個項目,它使用它來編組/解除XML - 有已使用各種JAXB註釋編寫的自定義驗證 - 目前沒有使用模式。
我需要添加一些驗證,當解組來檢查一個給定的元素只出現一次 - 通過搜索這看起來像它通常使用「maxOccurs = 1」在一個xsd - 所以我的問題是可以實現使用任何JAXB驗證註釋?
例如(爲了簡單起見,縮短版本) - 當前最後一個值「NameThree」被取消編組,但我想在存在多於1個名稱元素時出現驗證錯誤。JAXB解組 - 是否可以在不使用模式驗證的情況下限制元素的發生?

@XmlAccessorType(XmlAccessType.FIELD) 
public class Person { 

@XmlElement(name="NAME", required = true) 
    protected String name; 
} 

和XML文件:

<Person> 
<Name>NameOne</Name> 
<Name>NameTwo</Name> 
<Name>NameThree</Name> 
</Person> 

感謝任何指針。

編輯 - 爲了清楚起見,元素不是根元素。還有其他元素(以上僅用於說明)

回答

3

您的問題的直接答案是,我不認爲您可以使用JAXB驗證註釋來識別元素的多次出現。

但是,要解決您的問題而不實施架構,您可以將listener添加到解組器中,使您可以訪問callbacks.然後,您可以在條件正確時使用回調來引發異常。

+1

乾杯比爾 - 能夠得到我所需要的加入聽衆的建議。 – dibs76

相關問題