Jaxb - 忽略未知属性

时间:2014-12-30 20:10:02

标签: java xml jaxb

我有一个父类,其中包含一个枚举" ActionType"。

@XmlRootElement(name="Action")
public class ActionDto {
[...] ActionType type;
}

和一些子类,它们扩展了ActionDto并具有更多特殊属性,如密码(LoginDto)。

它是服务器 - 客户端连接。 我想从我的客户端向我的服务器发送一些数据。所以我序列化它(我使用Jaxb) 并将其反序列化为ActionDto对象。

LoginDto-Object的示例:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Action>
<type>LOGIN</type>
<password>Testpassword</password>
</Action>

如果我想将它反序列化为ActionDto对象,我会收到错误 - 我认为这是由password-attribute引起的。我可以让Jaxb-unmarshaller忽略那些未知属性吗?

是否有其他可能直接将其解组到我的LoginDto-Object(服务器只接收xml-String,我不知道特殊类型)?

2 个答案:

答案 0 :(得分:1)

默认情况下,JAXB实现将忽略未知元素。如果它抛出异常,则ValidationEventHandler上的默认Unmarshaller已被替换。您将需要用不太敏感的那个替换那个。

答案 1 :(得分:0)

如果您自己创建ObjectMapper,也可以尝试禁用该功能:

ObjectMapper mapper = new ObjectMapper()
                .configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);