2010-08-09 18 views
1

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 ContentHandlerSAXParser.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

Répondre

0

Peut-être que je mal compris, mais est-ce une solution pour vous? -> Xerces2 XSD Validation with SAXParser

+0

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