使用XML schema验证xml 文件

 import java.io.*;

 
import javax.xml.parsers.*;
 
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.*;
import org.dom4j.util.XMLErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
 
public class XMLValidation {
 
public void validateXML(String xsdFileName, String xmlFileName) {
try{
//create and configure instance of SAXParserFactory
   SAXParserFactory factory = SAXParserFactory.newInstance();   
   factory.setValidating(true);
   factory.setNamespaceAware(true);    
   
   //create and configure instance of SAXParser
   SAXParser parser = factory.newSAXParser();
   parser.setProperty(
    "http://java.sun.com/xml/jaxp/properties/schemaLanguage",
    "http://www.w3.org/2001/XMLSchema");
   parser.setProperty(    
    "http://java.sun.com/xml/jaxp/properties/schemaSource",    
    "file:" + xsdFileName);
   
   //create a SAXValidator instance 
SAXValidator validator = new SAXValidator(parser.getXMLReader());
XMLErrorHandler errorHandler = new XMLErrorHandler();
validator.setErrorHandler(errorHandler);         
//create a reader
SAXReader xmlReader = new SAXReader();    
Document xmlDocument = (Document) xmlReader.read(new File(xmlFileName));
 
//validate
validator.validate(xmlDocument);
//output
OutputFormat format = OutputFormat.createPrettyPrint();    
format.setEncoding("UTF-8");     
       XMLWriter writer = new XMLWriter( new FileWriter(new File("d://err.xml")), format);
if (errorHandler.getErrors().hasContent()) {    
                System.out.println("Sorry, the xml disagree with the xsd.");    
                writer.write(errorHandler.getErrors());           
                writer.close();                   
            } else {    
                System.out.println("Congratulations!");    
            }    
 
}catch(Exception ex){
System.out.println( xmlFileName + " disagree with " + xsdFileName + "/nReason: " + ex.getMessage());    
            ex.printStackTrace();    
}
}
public static void main(String[] args) {
XMLValidation xmlValidation = new XMLValidation();
xmlValidation.validateXML("mdl.xsd","mdl.xml");
}
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值