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

时间:2012-06-19 15:50:21

标签: 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。

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

1 个答案:

答案 0 :(得分:18)

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

排除属性的选项

  1. 如果您要排除少于一半的属性,我建议您使用@XmlTransient标记要排除的属性。
  2. 如果您希望排除超过一半的属性,那么我建议使用@XmlAccessorType(XmlAccessType.NONE)并注释您希望包含的属性。
  3. 了解更多信息