2012-06-19 24 views
16

如果我有一個類註解爲JAXB是否總是忽略@ XmlType/propOrder中未指定的'extra'元素?

@XmlType(name = "someDTO", propOrder = { "firstField", "secondField", })

但XML(從SOAP響應,說)看起來像

<return><firstField>a</firstField><secondField>b</secondField><thirdField>c</thirdField></return>

我的目標仍然會得到firstField和secondField填充,而thirdField被忽略。

這是爲什麼?這會一直如此嗎?如果有額外的字段存在,是否有辦法阻止對象創建?

回答

18

如果映射到未包含在propOrder中的XML元素的屬性映射到某些JAXB (JSR-222)實現將會投訴。 @XmlType上的propOder不用於控制包含/排除哪些元素。排除屬性

  1. 選項如果要排除小於性質的一半,那麼我建議你標記希望與@XmlTransient排除的。

  2. 如果你想排除超過一半的屬性,那麼我會建議使用@XmlAccessorType(XmlAccessType.NONE)並註釋你想包含的屬性。

更多信息

+0

你知道,如果有任何JAXB實現,如果有未映射到任何屬性的XML元素會抱怨? – Derek

+3

@Derek - 你可以在'Unmarshaller'上設置'ValidationEventHandler',當未映射的內容被擊中時,它應該報告'warning'。 –

+0

@BlaiseDoughan,需要多一個案例呢?例如,有一次我需要一個特定的領域,另一個時間不是......我能做些什麼? –