import org.apache.xerces.parsers.DOMParser;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
public class XMLValidator {
public static void main(String[] args) {
try {
String xmlFile = "ruta/al/archivo.xml";
String schemaFile = "ruta/al/esquema.xsd";
DOMParser parser = new DOMParser();
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
parser.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
"esquema-namespace " + schemaFile);
CustomErrorHandler errorHandler = new CustomErrorHandler();
parser.setErrorHandler(errorHandler);
parser.parse(xmlFile);
if (errorHandler.hasErrors()) {
System.out.println("El documento XML no es válido. Se encontraron los siguientes errores:");
System.out.println(errorHandler.getErrors());
} else {
System.out.println("El documento XML es válido.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static class CustomErrorHandler implements ErrorHandler {
private StringBuilder errors = new StringBuilder();
public void warning(SAXParseException e) throws SAXException {
errors.append("Advertencia: ").append(e.getMessage()).append("\n");
}
public void error(SAXParseException e) throws SAXException {
errors.append("Error: ").append(e.getMessage()).append("\n");
}
public void fatalError(SAXParseException e) throws SAXException {
errors.append("Error fatal: ").append(e.getMessage()).append("\n");
}
public boolean hasErrors() {
return errors.length() > 0;
}
public String getErrors() {
return errors.toString();
}
}
}