Java sax schema validation
https:www//.theitroad.com
The Simple API for XML (SAX) in Java provides a mechanism for validating XML documents against an XML schema using the SAX event-driven model. Here's an example of how to use SAX for schema validation in Java:
Suppose you have an XML document example.xml
and an XML schema example.xsd
. Here's the XML document:
<?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book> </catalog>
And here's the XML schema:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="catalog"> <xs:complexType> <xs:sequence> <xs:element name="book" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="author" type="xs:string"/> <xs:element name="title" type="xs:string"/> <xs:element name="genre" type="xs:string"/> <xs:element name="price" type="xs:decimal"/> <xs:element name="publish_date" type="xs:date"/> <xs:element name="description" type="xs:string"/> </xs:sequence> <xs:attribute name="id" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Here's an example of how to validate the XML document against the XML schema using SAX:
import javax.xml.XMLConstants; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.DefaultHandler; import java.io.File; import java.io.IOException; public class MyErrorHandler extends DefaultHandler { public void warning(SAXParseException e) throws SAXException { System.out.println("Warning: " + e.getMessage()); } public void error(SAXParseException e) throws SAXException { System.out.println("Error: " + e.getMessage()); } public void fatalError(SAXParseException e) throws SAXException { System.out.println("Fatal error: " + e.getMessage()); throw e; } } public class MySaxSchemaValidator { public static void main(String[] args) { try { File xmlFile = new File("example.xml"); File xsdFile = new File("example.xsd"); // create a schema factory SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); // create a schema object Schema schema = schemaFactory.newSchema(xsdFile); // create a SAX parser factory SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); // set the schema on the SAX parser factory saxParserFactory.setSchema(schema); // create a SAX parser SAXParser saxParser = saxParserFactory.newSAXParser(); // set the error handler saxParser.getXMLReader().setErrorHandler(new MyErrorHandler());