Reputation: 39733
I want to parse a xml file using a SAXParser or XMLReader and verify that the file conforms to a specific xsd file (new File( "example.xsd" )
).
It's easy to
do the validation against a xsd file in an extra step using a Validator
like in this SO answer.
to validate while parsing by specifying the name of the xsd as "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"
like in this SO answer.
But how can I validate against a new File( "example.xsd" )
while parsing?
Upvotes: 7
Views: 13182
Reputation: 108859
Assuming Java 5 or above, set the schema on the SAXParserFactory:
SchemaFactory schemaFactory = SchemaFactory
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File("myschema.xsd"));
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
saxFactory.setSchema(schema);
SAXParser parser = saxFactory.newSAXParser();
parser.parse("data.xml", new DefaultHandler() {
// TODO: other handler methods
@Override
public void error(SAXParseException e) throws SAXException {
throw e;
}
});
You handle validation errors by overriding the error method on your handler and acting as you see fit.
Upvotes: 5