Java 如何在SAXParser中验证XML文档而不必使用XMLReader?
我想创建一个验证的Java 如何在SAXParser中验证XML文档而不必使用XMLReader?,java,xml,xerces,xml-validation,Java,Xml,Xerces,Xml Validation,我想创建一个验证的SAXParser,但似乎唯一的方法是创建一个XMLReader并使用setErrorHandler(),或者让SAXParser.parse()中的ContentHandler也实现ErrorHandler 我错过什么了吗?我只想创建一个验证SAXParser,如下所示: private SAXParser createParser(final boolean validateXML) throws ParserConfigurationException, SAXExcep
SAXParser
,但似乎唯一的方法是创建一个XMLReader
并使用setErrorHandler()
,或者让SAXParser.parse()中的ContentHandler
也实现ErrorHandler
我错过什么了吗?我只想创建一个验证SAXParser
,如下所示:
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;
}
我正在使用Xerces 2.9.1
谢谢你的提示
埃里克也许我误解了,但这是你的解决方案吗?-->
不幸的是,没有,因为根据我的经验,SAXParser本身无法验证。您必须解析XML文档并添加ErrorHandler来发现XML是否有效。因此,即使SAXParser本身告诉您它正在验证,但实际上不是,只有ContentHandler/ErrorHandler起作用。至少这是我的经历。。。如果被证明是错误的,那就太好了:-)