Commit bcb1e17c by Patryk Czarnik

Program walidujący - własny ErrorHandler

parent af54e3e5
package walidacja;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
public class MojErrorHandler implements ErrorHandler {
private boolean bylBlad = false;
public boolean czyBylBlad() {
return bylBlad;
}
@Override
public void warning(SAXParseException exception) throws SAXException {
System.err.println("![WARNING] "+exception.getMessage() + " linia " + exception.getLineNumber());
bylBlad = true;
}
@Override
public void error(SAXParseException exception) throws SAXException {
System.err.println("![ERROR] "+exception.getMessage() + " linia " + exception.getLineNumber());
bylBlad = true;
// ewentualnie bardziej brutalnie:
//throw new SAXException("Blad walidacji.", exception);
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
bylBlad = true;
System.err.println("![FATAL ERROR] "+exception.getMessage() + " linia " + exception.getLineNumber());
}
}
...@@ -7,6 +7,7 @@ import javax.xml.validation.SchemaFactory; ...@@ -7,6 +7,7 @@ import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator; import javax.xml.validation.Validator;
public class WalidujWaluty1 { public class WalidujWaluty1 {
// W tej wersji w przypadku błędu walidacji program zostanie przerwany wyjątkiem.
public static void main(String[] args) { public static void main(String[] args) {
String plikXML = "waluty_2022.xml"; String plikXML = "waluty_2022.xml";
String plikXSD = "waluty.xsd"; String plikXSD = "waluty.xsd";
......
package walidacja;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
public class WalidujWaluty2 {
public static void main(String[] args) {
String plikXML = "waluty_2022.xml";
String plikXSD = "waluty.xsd";
System.out.println("Początek programu");
try {
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new StreamSource(plikXSD));
Validator validator = schema.newValidator();
MojErrorHandler errorHandler = new MojErrorHandler();
validator.setErrorHandler(errorHandler);
// Teraz w przypadku błędu walidacji nie będzie wyjątku, tylko zostanie wywłana metoda z przekazanego errorHandlera.
System.out.println("Start walidacji");
validator.validate(new StreamSource(plikXML));
if(errorHandler.czyBylBlad()) {
System.out.println("Koniec walidacji. Dokument zawierał błędy");
} else {
System.out.println("Koniec walidacji. Dokument prawidłowy");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment