最近对schema 验证研究了一下, 代码如下:
所需jar包需要自己下载(版本一定要正确)
public class schemavalidation {
public static void main(string[] args) {
validate();
}
public static void validate() {
try {
schemavalidation demo = new schemavalidation();
// give the xml and schema name
inputstream xmlstring = demo.getclass().getresourceasstream("gbainit.xml");
inputstream schemastr = demo.getclass().getresourceasstream("gbainitschema.xsd");
saxreader reader = createsaxreader(schemastr);
system.out.println("xsd parse successfully !");
document document = reader.read(xmlstring);
system.out.println("successfully validation .. . ");
} catch (documentexception e) {
system.out.println("exception occurred: " + e);
throwable nestedexception = e.getnestedexception();
if (nestedexception != null) {
system.out.println("nestedexception: " + nestedexception);
nestedexception.printstacktrace();
} else {
e.printstacktrace();
}
} catch (throwable t) {
system.out.println("exception occurred: " + t);
t.printstacktrace();
}
}
/** registers the verifier with the saxreader */
protected saxreader createsaxreader(inputstream schemauri) throws exception {
system.out.println("loaded schema document: " + schemauri);
// use autodetection of schemas
verifierfactory factory = new com.sun.msv.verifier.jarv.thefactoryimpl();
schema schema = factory.compileschema(schemauri);
verifier verifier = schema.newverifier();
verifier.seterrorhandler(new errorhandler() {
public void error(saxparseexception e) {
system.out.println("error: " + e);
}
public void fatalerror(saxparseexception e) {
system.out.println("fatal: " + e);
}
public void warning(saxparseexception e) {
system.out.println("warning: " + e);
}
});
// now install the verifying filter
verifierfilter filter = verifier.getverifierfilter();
saxreader reader = new saxreader();
reader.setxmlfilter(filter);
return reader;
}
}
闽公网安备 35060202000074号