java - JAXB 是否总是忽略@XmlType/propOrder 中未指定的 'extra' 元素?

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

这是为什么?会一直这样吗?如果存在额外的字段,是否有办法阻止创建对象?

最佳答案

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

排除属性的选项

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

了解更多信息

关于java - JAXB 是否总是忽略@XmlType/propOrder 中未指定的 'extra' 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11104697/

相关文章:

java - 如何修复java中的 "java.lang.ArrayIndexOutOfBoundsException: 1"

java - 空对象引用上的 'java.lang.String android.os.Bundle.getString(java.lang.String)'

mysql - 如何在 xml 文件中导出 Wordpress 用户?

c# - 如何通过.net解析javascript文件中的数据?

java - 比较 Java 中的重构模式

java - 搜索指定的键和值是否存在

.net - XmlSerializer 反序列化时自动检测 XML 类型(.NET 2.0)?

java - Jersey 可以生成 List<T> 但不能 Response.ok(List<T>).build()?

使用 JAXB 基于条件的 Java spring XML 绑定(bind)

java - JAXB 静态编码与 JAXBContext createMarshaller()