我在java中编写了以下代码进行验证,但它总是返回true。即使我修改 XML 并使其与 XSD 不兼容,它仍然返回 true。请看一下。
public static boolean isValidXML(String filePath,String xsdFile){
boolean bValue = true;
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder parser = documentBuilderFactory.newDocumentBuilder();
Document document = parser.parse(new File(filePath));
Schema schema = schemaFactory.newSchema(new File(xsdFile));
Validator validator = schema.newValidator();
final List<SAXParseException> exceptions = new LinkedList<SAXParseException>();
validator.setErrorHandler(new ErrorHandler()
{
public void warning(SAXParseException exception) throws SAXException
{
exceptions.add(exception);
}
public void fatalError(SAXParseException exception) throws SAXException
{
exceptions.add(exception);
}
public void error(SAXParseException exception) throws SAXException
{
exceptions.add(exception);
}
});
validator.validate(new DOMSource(document));
} catch (SAXException e) {
bValue = false;
logger.error("Error while Validating the XML."+e);
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bValue;
}