2
我已经在网上搜索并尝试了几天,但我仍然无法列出所有的错误,我只能显示1错误。为什么?我需要列出所有的错误。希望有人帮助我。以下是我的验证和错误处理程序代码。程序只进入error(),并且只进行一次。它错误的第一个元素,但也有其他元素丢失在XML中,它不显示它们。如何在xsd验证xml后列出所有错误?
import java.io.File;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
public class XMLValidate1 {
public static void main(String[] args) throws SAXException, IOException {
SchemaFactory factory
= SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
File schemaLocation = new File("Q1.xsd");
Schema schema = factory.newSchema(schemaLocation);
Validator validator = schema.newValidator();
validator.setErrorHandler(new ValidateErrorHandler());
Source xmlFile = new StreamSource(new File("Q1.xml"));
try {
validator.validate(xmlFile);
System.out.println(xmlFile.getSystemId() + " is valid.");
}
catch (SAXException ex) {
System.out.println(xmlFile.getSystemId() + " is not valid because ");
System.out.println(ex.getMessage());
}
}
}
下面是我的ErrorHandler
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
public class ValidateErrorHandler implements ErrorHandler {
public void warning(SAXParseException ex) {
System.out.println("Warning: ");
System.err.println(ex.getMessage());
}
public void error(SAXParseException ex) {
System.out.println("Error: ");
System.err.println(ex.getMessage());
}
public void fatalError(SAXParseException ex) throws SAXException {
System.out.println("Fatal error: ");
System.err.println(ex.getMessage());
}
}
我根本没有看到任何列表。 – shmosel