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();
}
}
}