2009-11-11 31 views
1

我使用DocumentBuilderFactory和w3c.org的Document類創建XML文檔。我想在將結果寫出到文件之前,針對XSD驗證生成的結構。 我知道我可以將DocumentBuilderFactory設置爲在創建時進行驗證,但我不希望因爲我正在做其他事情。有沒有辦法在Java中驗證內存中的XML DOM樹?

謝謝。

回答

3

它看起來好像javax.xml.validation包具有所需的功能。如果您在文件加載到一個名爲文件已經變量,這應該做的伎倆:

// create a SchemaFactory capable of understanding WXS schemas 
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 

// load a WXS schema, represented by a Schema instance 
Source schemaFile = new StreamSource(new File("mySchema.xsd")); 
Schema schema = factory.newSchema(schemaFile); 

// create a Validator instance, which can be used to validate an instance document 
Validator validator = schema.newValidator(); 

// validate the DOM tree 
try { 
    validator.validate(new DOMSource(document)); 
} catch (SAXException e) { 
    // instance document is invalid! 
} 

從這個頁面:

http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/validation/package-summary.html

+0

當試圖實現這一點,我的編譯器是無法解析XMLConstants.W3C_XML_SCHEMA_NS_URI。我使用java 1.6,文檔說它應該在那裏,但我沒有將它看作javax.xml.XMLConstants類的一部分。思考? – Casey 2009-11-11 16:26:34

+0

我所能想到的就是確保你正在導入javax.xml.XMLConstants。還有其他XMLConstants,我的IDE建議,但他們不工作。 – 2009-11-11 16:37:12

+0

我做到了。它只有一個選項,它絕對不是正確的。我只是用文檔給出的url替換了常量。 – Casey 2009-11-11 16:45:02

相關問題