Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SAXParser中验证XML文档而不必使用XMLReader?_Java_Xml_Xerces_Xml Validation - Fatal编程技术网

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起作用。至少这是我的经历。。。如果被证明是错误的,那就太好了:-)