I want to validate an xml document with an existing
schema. I know there is a code to do it when the schema is present as a URL. BUt
in my case schema is present with in the application (since it is stored in the
database) and that is not the url.
I have the following code:
public static void DOMValidate(String XMLfile,
String Schema){
long startTime = System.currentTimeMillis(); //
Instantiate the DOM parser.
DOMParser parser = new DOMParser(); // set
the features
try{ parser.setFeature("http://xml.org/sax/features/namespaces",true); parser.setFeature("http://xml.org/sax/features/validation", true); parser.setFeature("http://apache.org/xml/features/validation/schema",true); parser.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true); // convert the xml file name to a URL String SystemId = null; try{ SystemId = new File(Schema).toURL().toExternalForm(); } catch(java.net.MalformedURLException ex){ //ex.printStackTrace(); log.error(ex); } parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",SystemId); // myErrorHandler is a descendant of ErrorHandler, it should be set here to be able to catch parse errors parser.setErrorHandler(new SchemaErrorHandler()); } catch
(SAXNotSupportedException
ex){
System.out.println("SAXNotSupportedException Exception"); } catch (SAXNotRecognizedException ex){ System.out.println("SAXNotRecognizedException Exception"); } // parse
the xml file, the errorhandler class has
callbacks,
// so those will be called automatically there is a parse error try{ parser.parse(new File(XMLfile).toURL().toExternalForm()); //System.out.println("Parsed Successfully by DOM Parser"); } catch (org.xml.sax.SAXException ex){ //System.out.println("SAXException Exception"); //ex.printStackTrace(); log.error(ex); } catch (java.io.IOException ex){ System.out.println("IOException Exception"); } finally { long endTime = System.currentTimeMillis(); //System.out.println("Total time of DOMValidate:"+(endTime-startTime)); } }
How can I do the validation if the Schema is the
actual schema string not the url. This looks like a common problem. I assume
that its not universal that schema is not always stored externally.
Any suggestions are appreciated.
Praveen
|