我傳遞一些XML的RESTful Web服務:規定在JAXB中只允許一個元素的一個實例?
<root>
<element1/>
<element2/>
<element3/>
</root>
Web服務將解組此XML,我希望確保XML是有效的。
我使用的架構來創建Java對象,並在此架構element1
具有maxOccurs=1
屬性但這對所創建的(不同於,例如Java對象沒有影響,添加minOccurs=1
這將導致"required=true"
被添加到@XMLElement
註釋)。在解組傳遞Web服務的XML時,如果一次只出現一次的元素出現多次,那麼元素的最後一個實例將被解析。我不希望發生這種情況,因爲我希望能夠提醒客戶他們發送的XML無效,並且應該刪除任何不適用的元素 - 而不是隻是隨意接受最後一個元素。我相信這將涉及解組之前的一些預驗證 - 我可以使用beforeUnmarshal方法。
經過一番研究,我的理解是沒有JAXB註釋可以讓我指定element1
只能存在一次。是這樣嗎?如果沒有模式,是否可以驗證它?
你試過maxOccurs = 1嗎? – Victor
我從maxOccurs = 1的模式生成了我的java類,是的。但是java類沒有任何東西可以強制執行,所以如果有多個元素會解析最後一個元素,並且似乎忽略了其餘元素,那麼當我真的需要一個異常時。 – kirsty
JAXB不執行模式驗證。你必須手動進行模式驗證 –