我是JAXB的新手,并继承了一个使用它来编组/解组xml的项目 - 已经使用各种JAXB注释编写了自定义验证 - 目前没有使用模式。
我需要在解组时添加一些验证来检查给定元素只出现一次 - 从搜索周围看起来它通常在xsd中使用“maxOccurs = 1”实现 - 所以我的问题是可以使用任何JAXB验证来实现注释?
例如(简化版本缩短版) - 当前最后一个值“NameThree”被取消编组,但是当存在多个名称元素时我想要验证错误。
@XmlAccessorType(XmlAccessType.FIELD)
public class Person {
@XmlElement(name="NAME", required = true)
protected String name;
}
和xml文件:
<Person>
<Name>NameOne</Name>
<Name>NameTwo</Name>
<Name>NameThree</Name>
</Person>
感谢您的任何指示。
编辑 - 为清楚起见,元素不是根元素。还有其他元素(以上仅供参考)
答案 0 :(得分:3)
您问题的直接答案是我认为您不能使用JAXB验证注释来识别元素的多次出现。
但是,为了在不实现模式的情况下解决您的问题,您可以向unmarshaller添加listener,以便您访问callbacks.然后您可以使用回调在条件为右。