R
ramu
Hi,
I want to validate an xml document against an XSD. The program is
written in java.
Below is the program:
package transform;
import oracle.xml.schemavalidator.XSDValidator;
import oracle.xml.parser.schema.XSDException;
import oracle.xml.parser.schema.XMLSchema;
import oracle.xml.parser.schema.XSDBuilder;
import oracle.xml.parser.v2.XMLError;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
import java.net.URL;
public class SchemaValidator{
public void validateSchema(String SchemaUrl, String
XmlDocumentUrl)
{
try {
XSDValidator xsdValidator=new XSDValidator();
XSDBuilder builder = new XSDBuilder();
URL url = new URL(SchemaUrl);
XMLSchema schemadoc =
(XMLSchema)builder.build(url);
xsdValidator.setSchema(schemadoc);
Validator handler=new Validator();
XMLError xmlError=new XMLError();
xmlError.setErrorHandler(handler);
xsdValidator.setError(xmlError);
xsdValidator.validate(new
URL(XmlDocumentUrl));
if(handler.validationError==true)
System.out.println("This XML Document
has Error: " + handler.saxParseException.getMessage());
else
System.out.println("This XML Document
is valid");
}
catch(java.io.IOException ioe)
{
System.out.println("IOException
"+ioe.getMessage());
}catch (SAXException e) {
System.out.println("SAXException
"+e.getMessage());
}
catch (XSDException e) {
System.out.println("SAXException
"+e.getMessage());
}
}
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{}
}
public static void main(String[] argv){
String SchemaUrl=argv[0];
String XmlDocumentUrl=argv[1];
SchemaValidator validator=new SchemaValidator();
validator.validateSchema(SchemaUrl, XmlDocumentUrl);
}
}
When some attributes are missing in the XML document ,which is to be
validated, it is giving NullPointerException.
Exception in thread "main" java.lang.NullPointerException
at oracle.xml.parser.v2.XMLError.flushNodes(XMLError.java:351)
at
oracle.xml.parser.schema.XSDValidator.sendDOMError(XSDValidator.java:
1749)
at
oracle.xml.parser.schema.XSDValidator.error(XSDValidator.java:1713)
at
oracle.xml.parser.schema.XSDValidator.validateAttribute(XSDValidator.java:
671)
at
oracle.xml.parser.schema.XSDValidator.startElement(XSDValidator.java:
534)
at
oracle.xml.parser.v2.XMLElement.reportStartElement(XMLElement.java:
3066)
at
oracle.xml.parser.v2.XMLElement.reportSAXEvents(XMLElement.java:2937)
at
oracle.xml.parser.v2.XMLElement.reportChildSAXEvents(XMLElement.java:
2950)
at
oracle.xml.parser.v2.XMLElement.reportSAXEvents(XMLElement.java:2939)
at
oracle.xml.parser.v2.XMLElement.reportChildSAXEvents(XMLElement.java:
2950)
at
oracle.xml.parser.v2.XMLElement.reportSAXEvents(XMLElement.java:2939)
at
oracle.xml.parser.v2.XMLElement.reportChildSAXEvents(XMLElement.java:
2950)
at
oracle.xml.parser.v2.XMLElement.reportSAXEvents(XMLElement.java:2939)
at
oracle.xml.parser.v2.XMLElement.reportChildSAXEvents(XMLElement.java:
2950)
at
oracle.xml.parser.v2.XMLDocument.reportSAXEvents(XMLDocument.java:
1389)
at
oracle.xml.schemavalidator.XSDValidator.validate(XSDValidator.java:97)
at
oracle.xml.schemavalidator.XSDValidator.validate(XSDValidator.java:
163)
at
transform.SchemaValidator.validateSchema(SchemaValidator.java:28)
at transform.SchemaValidator.main(SchemaValidator.java:68)
Instead of throwing NullPointerException, I want an proper error
message to be printed.
Can anyone please tell me how to do this?
I want to validate an xml document against an XSD. The program is
written in java.
Below is the program:
package transform;
import oracle.xml.schemavalidator.XSDValidator;
import oracle.xml.parser.schema.XSDException;
import oracle.xml.parser.schema.XMLSchema;
import oracle.xml.parser.schema.XSDBuilder;
import oracle.xml.parser.v2.XMLError;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
import java.net.URL;
public class SchemaValidator{
public void validateSchema(String SchemaUrl, String
XmlDocumentUrl)
{
try {
XSDValidator xsdValidator=new XSDValidator();
XSDBuilder builder = new XSDBuilder();
URL url = new URL(SchemaUrl);
XMLSchema schemadoc =
(XMLSchema)builder.build(url);
xsdValidator.setSchema(schemadoc);
Validator handler=new Validator();
XMLError xmlError=new XMLError();
xmlError.setErrorHandler(handler);
xsdValidator.setError(xmlError);
xsdValidator.validate(new
URL(XmlDocumentUrl));
if(handler.validationError==true)
System.out.println("This XML Document
has Error: " + handler.saxParseException.getMessage());
else
System.out.println("This XML Document
is valid");
}
catch(java.io.IOException ioe)
{
System.out.println("IOException
"+ioe.getMessage());
}catch (SAXException e) {
System.out.println("SAXException
"+e.getMessage());
}
catch (XSDException e) {
System.out.println("SAXException
"+e.getMessage());
}
}
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{}
}
public static void main(String[] argv){
String SchemaUrl=argv[0];
String XmlDocumentUrl=argv[1];
SchemaValidator validator=new SchemaValidator();
validator.validateSchema(SchemaUrl, XmlDocumentUrl);
}
}
When some attributes are missing in the XML document ,which is to be
validated, it is giving NullPointerException.
Exception in thread "main" java.lang.NullPointerException
at oracle.xml.parser.v2.XMLError.flushNodes(XMLError.java:351)
at
oracle.xml.parser.schema.XSDValidator.sendDOMError(XSDValidator.java:
1749)
at
oracle.xml.parser.schema.XSDValidator.error(XSDValidator.java:1713)
at
oracle.xml.parser.schema.XSDValidator.validateAttribute(XSDValidator.java:
671)
at
oracle.xml.parser.schema.XSDValidator.startElement(XSDValidator.java:
534)
at
oracle.xml.parser.v2.XMLElement.reportStartElement(XMLElement.java:
3066)
at
oracle.xml.parser.v2.XMLElement.reportSAXEvents(XMLElement.java:2937)
at
oracle.xml.parser.v2.XMLElement.reportChildSAXEvents(XMLElement.java:
2950)
at
oracle.xml.parser.v2.XMLElement.reportSAXEvents(XMLElement.java:2939)
at
oracle.xml.parser.v2.XMLElement.reportChildSAXEvents(XMLElement.java:
2950)
at
oracle.xml.parser.v2.XMLElement.reportSAXEvents(XMLElement.java:2939)
at
oracle.xml.parser.v2.XMLElement.reportChildSAXEvents(XMLElement.java:
2950)
at
oracle.xml.parser.v2.XMLElement.reportSAXEvents(XMLElement.java:2939)
at
oracle.xml.parser.v2.XMLElement.reportChildSAXEvents(XMLElement.java:
2950)
at
oracle.xml.parser.v2.XMLDocument.reportSAXEvents(XMLDocument.java:
1389)
at
oracle.xml.schemavalidator.XSDValidator.validate(XSDValidator.java:97)
at
oracle.xml.schemavalidator.XSDValidator.validate(XSDValidator.java:
163)
at
transform.SchemaValidator.validateSchema(SchemaValidator.java:28)
at transform.SchemaValidator.main(SchemaValidator.java:68)
Instead of throwing NullPointerException, I want an proper error
message to be printed.
Can anyone please tell me how to do this?