JAXB是否始终忽略@ XmlType/propOrder中未指定的"额外"元素?

Der*_*rek 16 java xml jaxb

如果我有一个注释的类

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

但是XML(比如说来自SOAP响应)看起来像

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

我的对象仍将填充firstField和secondField,并忽略thirdField.

为什么是这样?这总是如此吗?如果有额外的字段,有没有办法防止对象创建?

bdo*_*han 18

如果存在映射到未包含在XML元素中的属性,则某些JAXB(JSR-222)实现会抱怨propOrder. propOderon @XmlType不用于控制包含/排除哪些元素.

排除属性的选项

  1. 如果您想排除少于一半的属性,那么我建议您标记要排除的属性@XmlTransient.
  2. 如果您希望排除超过一半的属性,那么我建议使用@XmlAccessorType(XmlAccessType.NONE)和注释您希望包含的属性.

欲获得更多信息

  • @Derek - 你可以在`Unmarshaller`上设置一个`ValidationEventHandler`,它应该在未映射的内容被命中时报告`warning`. (3认同)