Mercurial > hg > MetaDataManager
view src/de/mpiwg/itgroup/metadataManager/validation/IndexMetaValidator.java @ 1:2267d8c80a99
intial
author | dwinter |
---|---|
date | Sun, 23 Oct 2011 21:29:45 +0200 |
parents | |
children |
line wrap: on
line source
package de.mpiwg.itgroup.metadataManager.validation; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.io.UnsupportedEncodingException; import org.apache.log4j.Logger; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.DefaultHandler; public class IndexMetaValidator { private Logger logger = Logger.getRootLogger(); public static boolean validate(String indexMeta) throws UnsupportedEncodingException{ IndexMetaValidator iv = new IndexMetaValidator(); InputStream is = new ByteArrayInputStream(indexMeta.getBytes("utf-8")); String schemaUrl="/Users/dwinter/Documents/Projekte/ECHO-eSciDoc-MPDL/escidocMPIWG/MetaDataManager/src/de/mpiwg/itgroup/metadataManager/validation/data/index_meta.xsd"; iv.validateSchema(schemaUrl, is); return false;} public boolean validateSchema(String SchemaUrl, InputStream xmlDocumentStream) { try { //Create SAXBuilder object SAXBuilder saxBuilder = new SAXBuilder( "org.apache.xerces.parsers.SAXParser", true); //Set SAXBuilder parser to be a validating parser saxBuilder.setValidation(true); saxBuilder.setFeature( "http://apache.org/xml/features/validation/schema", true); saxBuilder.setFeature( "http://apache.org/xml/features/validation/schema-full-checking",true); saxBuilder.setProperty( "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",SchemaUrl); //Create a ErrorHandler and set ErrorHandler on parser. Validator handler = new Validator(); saxBuilder.setErrorHandler(handler); //Parse XML Document saxBuilder.build(xmlDocumentStream); //Output Validation Errors if (handler.validationError == true){ logger.debug("XML Document has Error:" + handler.validationError + " " + handler.saxParseException.getMessage()); return false;} else{ logger.debug("XML Document is valid"); return true;} } catch (JDOMException jde) { logger.debug(jde); } catch (IOException ioe) { } return false; } //Error Handler class private class Validator extends DefaultHandler { public boolean validationError = false; public SAXParseException saxParseException = null; public void error(SAXParseException exception) throws SAXException { validationError = true; saxParseException = exception; } public void fatalError(SAXParseException exception) throws SAXException { validationError = true; saxParseException = exception; } public void warning(SAXParseException exception) throws SAXException { } } }