使用Moxy @XmlDiscriminator节点值时是否可以使默认类取消编组?

时间:2018-10-24 03:56:53

标签: java xml jaxb moxy

使用Moxy @XmlDiscriminatorNode和@XmlDiscriminatorValue继承规则时,我们必须始终指定所有可能的@XmlDiscriminatorValue映射到类。 如果输入的XML在我们的代码中具有未定义的值,我们将在下面得到异常:

Exception [EclipseLink-43] (Eclipse Persistence Services -     2.7.3.v20180807-4be1041): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Missing class for indicator field value [XXXX] of type [class java.lang.String].

是否可以指定默认类以映射未知值?

在以下情况下的示例:

@XmlDiscriminatorNode("myNode")
@XmlSeeAlso({TypeA.class,TypeB.class}
public class BaseType {
    ...
}

@XmlDiscriminatorValue("typeA")
public class TypeA {
    ...
}

@XmlDiscriminatorValue("typeB")
public class TypeB {
...
}

@XmlRootElement
public class Root {
    ...
    @XmlElement
    public List<BaseType> baseTypes;
    ...
}

现在,如果我们具有属性为myNode="typeC"的XML元素,这将打破编组器。有没有办法忽略未知/未定义的类型,以便将来在XML中添加新的BaseType时,不会破坏当前代码?

0 个答案:

没有答案