1、得到一个SchemaFactory对象
SchemaFactory schemafactory=SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); //
2、创建Schema对象
Schema schema=schemafactory.newSchema(xsdfile);
3、得到验证器
Validator vaildator=schema.newValidator();
4、使用验证器
vaildator.setErrorHandler((ErrorHandler) errorHandler);
vaildator.validate(new StreamSource(xmlfile));
package com.schema;
import java.io.File;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
public class TestSchema {
public static void main(String[] args) {
File xsdfile=new File("xml/orders.xsd"); //项目下引见一个xml文件夹,将要匹配的两个文件放入
File xmlfile=new File("xml/orders.xml");
Handler errorHandler=null;
try{
SchemaFactory schemafactory=SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); //
Schema schema=schemafactory.newSchema(xsdfile);
Validator vaildator=schema.newValidator();
errorHandler=new Handler();
vaildator.setErrorHandler((ErrorHandler) errorHandler);
vaildator.validate(new StreamSource(xmlfile));
}catch(Exception e){
System.out.println(e);
}
if(errorHandler.errorMessage==null){
System.out.println(""+xmlfile.getName()+"符合模式");
}else{
System.out.println(""+xmlfile.getName()+"不符合模式");
}
}
}
class Handler extends DefaultHandler{
String errorMessage=null;
public void error(SAXParseException e){
errorMessage=e.getMessage();
int row=e.getLineNumber();
int colums=e.getColumnNumber();
System.out.println(":"+errorMessage+"在"+row+"行,"+colums);
}
public void fatalError(SAXParseException e)throws SAXException{
errorMessage=e.getMessage();
int row=e.getLineNumber();
int colums=e.getColumnNumber();
System.out.println(":"+errorMessage+""+row+","+colums);
}
}