J'ai cherché en ligne et essayé pendant quelques jours mais je ne peux toujours pas énumérer toutes les erreurs, je peux seulement montrer 1 erreur. Pourquoi? Je dois énumérer toutes les erreurs. J'espère que quelqu'un m'aidera. Voici mon code de gestionnaire de validation et d'erreur. Le programme va à error() seulement, et seulement une fois. C'est une erreur pour le premier élément mais il manque aussi d'autres éléments dans le XML, il ne les affiche pas.Comment lister toutes les erreurs après avoir validé xml avec xsd?
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());
}
}
}
Ci-dessous mon 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());
}
}
Je ne vois aucune liste du tout. – shmosel