Je veux créer un SAXParser
qui valide, mais il semble que le seul moyen est soit de créer un XMLReader
et utiliser setErrorHandler()
ou laissez-le dans ContentHandler
SAXParser.parse()
également mettre en œuvre ErrorHandler
.Comment puis-je valider le document XML dans un SAXParser sans avoir à utiliser un XMLReader?
Ai-je raté quelque chose? Tout ce que je veux faire est de créer une validation SAXParser
comme ceci:
private SAXParser createParser(final boolean validateXML) throws ParserConfigurationException, SAXException {
final SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(validateXML);
factory.setFeature("http://apache.org/xml/features/validation/schema", validateXML);
SAXParser parser = factory.newSAXParser();
Assert.assertNotNull("Checking parser exists", parser);
Assert.assertEquals("Checking validation", validateXML, parser.isValidating());
Assert.assertTrue("Checking namespace awareness", parser.isNamespaceAware());
return parser;
}
J'utilise Xerces 2.9.1
Merci pour tout conseils!
Eric
Malheureusement non, puisque d'après mon expérience le SAXParser lui-même ne valide pas. Vous devez analyser un document XML et ajouter un ErrorHandler pour déterminer si le XML est valide ou non valide. Ainsi, même si le SAXParser lui-même vous dit qu'il valide, ce n'est pas le cas, seul ContentHandler/ErrorHandler fait la différence. Au moins c'est ce que j'ai vécu ... Ce serait bien d'avoir tort :-) – eerriicc