2017-08-17 72 views
8

當你解組整個XML與JAXB當JAXB模式驗證,您可以設置XML模式解析期間啓用驗證:解組非根元素

//javax.xml.validation.Schema schema = ... 
jaxbUnmarshaller = JAXBContext.newInstance(SomeRootType.class).createUnmarshaller(); 
jaxbUnmarshaller.setSchema(schema); 

在另一方面,當你的NestedObjest小號解組列表從XML,一個接一個地(例如以減少存儲器使用)該方法失敗(如架構僅接受根)配有一個例外:

org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 22; cvc-elt.1: Cannot find the declaration of element 'NestedObject' 

它未能即使NestedObjectType處於XSD良好定義。有沒有任何選項來啓用嵌套對象驗證?請注意,定義新的模式是一個悲慘的選擇,因爲XSD對於我的應用程序是由其他人維護的外部應用程序。

+3

中解釋的那樣,您能否提供一些示例輸入,哪裏出現此錯誤? –

回答

0

您是否嘗試過將綁定bean的類傳遞給unmarshal方法?就像在Example 65. Unmarshalling into a known type

+0

我做到了。不起作用。 – jaskmar

+0

你可以修改源xml嗎?例如:添加xsi:type屬性 –

+0

我無法修改xml/schema。在示例中,您鏈接的teher未啓用驗證。 – jaskmar