5.6.5 Sample Program When Using the SAX Parser
This section describes a sample program for validating XML documents using the SAX parser, how the sample program is executed, and the execution result.
- Organization of this subsection
(1) Sample program (SampleValidateSAX.java)
The following shows the sample program (SampleValidateSAX.java) when using the SAX parser:
import javax.xml.parsers.*; import org.xml.sax.*; import java.io.*; public class SampleValidateSAX implements ErrorHandler{ public static final void main(String[] argv){ if (argv.length != 2) { System.out.println( "Usage: java SampleValidateSAX <xml_file> <schema_file>"); System.exit(1); } try{ SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware(true); spf.setValidating(true); SAXParser sp = spf.newSAXParser(); sp.setProperty( "http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema"); sp.setProperty( "http://java.sun.com/xml/jaxp/properties/schemaSource", argv[1]); XMLReader reader = sp.getXMLReader(); reader.setErrorHandler(new SampleValidateSAX()); reader.parse(argv[0]); System.out.println("Validation OK"); }catch(ParserConfigurationException e){ e.printStackTrace(); }catch(SAXParseException e){ e.printStackTrace(); }catch(SAXException e){ System.out.println("Validation NG: " + e.getMessage()); }catch(IOException e){ e.printStackTrace(); } } public void warning(SAXParseException exception) throws SAXException { System.out.println("**Parsing Warning**\n" + " Line: " + exception.getLineNumber() + "\n" + " URI: " + exception.getSystemId() + "\n" + " Message: " + exception.getMessage()); } public void error(SAXParseException exception) throws SAXException{ System.out.println("**Parsing Error**\n" + " Line: " + exception.getLineNumber() + "\n" + " URI: " + exception.getSystemId() + "\n" + " Message: " + exception.getMessage()); throw new SAXException("Error encountered"); } public void fatalError(SAXParseException exception) throws SAXException { System.out.println("**Parsing Fatal Error**\n" + " Line: " + exception.getLineNumber() + "\n" + " URI: " + exception.getSystemId() + "\n" + " Message: " + exception.getMessage()); throw new SAXException("Fatal Error encountered"); } }
(2) Execution result of the sample program
The execution result of this sample program is output to the standard output. The following shows the content of the standard output:
- When purchaseOrder.xml is specified for validation
Validation OK
- When purchaseOrder-fail.xml is specified for validation
**Parsing Error** Line: 33 URI: file:///folder-where-sample-is-stored/purchaseOrder-fail.xml Message: KECX06063-E cvc-pattern-valid: Value '111144442222999955' is not facet-valid with respect to pattern '\d{16}' for type '#AnonType_creditNumber'. Validation NG: Error encountered