1
我使用DocumentBuilderFactory和w3c.org的Document類創建XML文檔。我想在將結果寫出到文件之前,針對XSD驗證生成的結構。 我知道我可以將DocumentBuilderFactory設置爲在創建時進行驗證,但我不希望因爲我正在做其他事情。有沒有辦法在Java中驗證內存中的XML DOM樹?
謝謝。
我使用DocumentBuilderFactory和w3c.org的Document類創建XML文檔。我想在將結果寫出到文件之前,針對XSD驗證生成的結構。 我知道我可以將DocumentBuilderFactory設置爲在創建時進行驗證,但我不希望因爲我正在做其他事情。有沒有辦法在Java中驗證內存中的XML DOM樹?
謝謝。
它看起來好像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
當試圖實現這一點,我的編譯器是無法解析XMLConstants.W3C_XML_SCHEMA_NS_URI。我使用java 1.6,文檔說它應該在那裏,但我沒有將它看作javax.xml.XMLConstants類的一部分。思考? – Casey 2009-11-11 16:26:34
我所能想到的就是確保你正在導入javax.xml.XMLConstants。還有其他XMLConstants,我的IDE建議,但他們不工作。 – 2009-11-11 16:37:12
我做到了。它只有一個選項,它絕對不是正確的。我只是用文檔給出的url替換了常量。 – Casey 2009-11-11 16:45:02