我們有這個JAXB註釋:需要JAXB =真正似乎並不需要
@XmlElement(name = "Strategy", required = true)
protected List<Strategy> strategy;
如果沒有Strategy
元素存在,不會引發任何異常..這是爲什麼?我們不應該得到例外嗎?
我們有這個JAXB註釋:需要JAXB =真正似乎並不需要
@XmlElement(name = "Strategy", required = true)
protected List<Strategy> strategy;
如果沒有Strategy
元素存在,不會引發任何異常..這是爲什麼?我們不應該得到例外嗎?
JAXB參考實現不使用此屬性進行驗證,它純粹出於文檔目的。
如果您需要驗證文檔,您需要定義一個XML Schema,並使用SchemaFactory
將它注入Marshaller
或Unmarshaller
。
此外,您可以使用beforeMarshal
和afterUnmarshal
方法作爲Marshaller和Unmarshaller只具備驗證輸入。
訪問這些方法的方案也允許您爲方法聲明添加任意的throws
子句。這意味着在實施這些方法時,您可以安全地使用javax.xml.bind.MarshalException
和javax.xml.bind.UnmarshalException
(或您想要的任何類型的Exception
)來發出驗證錯誤的信號。
請參閱[this](http://stackoverflow.com/a/2696765/12604)以獲取從'JAXBContext'中加載'Schema'以在Marshaller/Unmarshaller中使用的示例。 – 2013-01-25 16:19:52
我不會說它純粹是爲了文檔 - 它也用於模式生成。當您從Java類生成XSD並且具有'required = true'時,XSD中的元素聲明將使用'minOccurs =「1」'生成。然後您可以使用XSD來驗證XML。 – Jesper 2017-09-30 13:18:07