2011-03-02 112 views

回答

12

您可以使用javax.xml.validation API。

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
URL schemaURL = // The URL to your XML Schema; 
Schema schema = sf.newSchema(schemaURL); 
Validator validator = schema.newValidator(); 
DOMSource source = new DOMSource(xmlDOM); 
validator.validate(source); 

下面的例子演示瞭如何來驗證架構JAXB對象模型,但你會看到它很容易與DOMSource的更換JAXBSource爲DOM:

+0

謝謝布萊斯。雖然與問題沒有直接關係,但我還想問問另一個問題:如果指定的Schema(已由StreamSource傳遞給SchemaFactory)包含另一個僅作爲ClassLoader資源提供的模式,該怎麼辦?不幸的是,傳遞兩個StreamSource不起作用。 – MRalwasser 2011-03-02 16:53:47

+2

@MRalwasser - 請參閱'SchemaFactory.setResourceResolver'。在javadocs中有各種各樣的偉大信息... – jtahlborn 2011-03-02 16:58:12

+0

@jtahlbborn:謝謝,這工作。但是:似乎在驗證文檔時,模式默認值不被遵守,文檔及其節點保持不變。 – MRalwasser 2011-03-02 17:45:56