Java JAXB required=true不';似乎不需要

Java JAXB required=true不';似乎不需要,java,xml,jaxb,Java,Xml,Jaxb,我们有这个JAXB注释: @XmlElement(name = "Strategy", required = true) protected List<Strategy> strategy; @xmlement(name=“Strategy”,required=true) 受保护名单战略; 如果不存在策略元素,则不会引发异常。。为什么会这样?我们不应该得到一个例外吗?JAXB参考实现没有使用这个属性进行验证,它只是为了文档目的 如果需要验证文档,则需要使用SchemaFact

我们有这个JAXB注释:

 @XmlElement(name = "Strategy", required = true)
 protected List<Strategy> strategy;
@xmlement(name=“Strategy”,required=true)
受保护名单战略;

如果不存在
策略
元素,则不会引发异常。。为什么会这样?我们不应该得到一个例外吗?

JAXB参考实现没有使用这个属性进行验证,它只是为了文档目的


如果需要验证文档,则需要使用
SchemaFactory

定义XML模式,并将其注入
Marshaller
Unmarshaller
中,此外,还可以使用
beforemashall
afterUnmarshal
方法验证和中指定的输入


访问这些方法的方案还允许您在方法声明中添加任意的
throws
子句。这意味着,在实现这些方法时,您可以安全地使用
javax.xml.bind.marshaleexception
javax.xml.bind.unmarshaleexception
(或者您想要的任何类型的
异常
)向验证错误发送信号。

请参阅从
JAXBContext
加载
模式
以用于
Marshaller
/
解组器
的示例。我不会说它纯粹用于文档化-它还用于模式生成。当您从Java类生成XSD,并且您具有
required=true
时,XSD中的元素声明将使用
minOccurs=“1”
生成。然后可以使用XSD验证XML。