如果我有一个类用
@XmlType(name = "someDTO", propOrder = { "firstField", "secondField",})
但是XML(例如,来自SOAP响应)看起来像
<return><firstField>a</firstField><secondField>b</secondField><thirdField>c</thirdField></return>
我的对象仍将填充firstField和secondField,并且firstField被忽略。

为什么是这样?会一直这样吗?如果存在额外的字段,是否可以防止创建对象?

最佳答案

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

排除属性的选项

  • 如果要排除少于一半的属性,则建议使用@XmlTransient标记要排除的属性。
  • 如果您希望排除一半以上的属性,那么我建议您使用@XmlAccessorType(XmlAccessType.NONE)并注释要包含的属性。

  • 有关更多信息
  • http://blog.bdoughan.com/2012/04/jaxb-and-unmapped-properties.html
  • 关于java - JAXB是否总是忽略@ XmlType/propOrder中未指定的 'extra'元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11104697/

    10-08 20:46