2012-06-19 22 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,需要多一个案例呢?例如,有一次我需要一个特定的领域,另一个时间不是......我能做些什么? –