XSD从固定文件目录批量校验XML文件

package com.google.main;


import java.io.File;
import java.io.IOException;


import javax.xml.transform.Source;
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.SAXException;




public class TestXml {


    public static void main(String[] args) {


       //web中获取 classpath路径
       // String classpath= Thread.currentThread().getContextClassLoader().getResource("/").getPath();
       // java.net.URLDecoder.decode(xsdPath,"utf-8"); 将路径转码
       // realPath=java.net.URLDecoder.decode(realPath,"utf-8"); 将路径解码
        
        //相对路径
        String xsdPath = "src/xsd/9906_统计.xsd";
        //绝对路径
        String filepath = "C:\\xml\\expotXML\\TJ\\201710"; 
        //列出所有文件
        getFileNameAndCheck(filepath,xsdPath);


    }


    //列出所有文件
    public static void getFileNameAndCheck(String filepath,String xsdPath) {


        File f = new File(filepath);
        if (!f.exists()) {
            System.out.println(filepath + " 不存在");
            return;
        }


        File fa[] = f.listFiles();
        for (int i = 0; i < fa.length; i++) {
            File fs = fa[i];
            if (fs.isDirectory()) {
                System.out.println(fs.getName() + " [是目录]");
            } else {
                checkXml(xsdPath,fs.getAbsolutePath(),fs.getName());
                 
            }
        }
    }
    
    //校验xml
    public static Boolean checkXml(String xsdPath ,String xmlPath,String filename){
        
        Boolean flag= true;
        
        try {
            if (validateXml(xsdPath, xmlPath)) {
                System.out.println(filename+" 校验通过");
            }
        } catch (SAXException e) {
            flag=false;
            System.out.println(filename+" 校验失败");
            e.printStackTrace();
        } catch (IOException e) {
            flag=false;
            System.out.println(filename+" 校验失败");
            e.printStackTrace();
        }
        return flag;
        
    }
    


    public static boolean validateXml(String xsdPath, String xmlPath)
     throws SAXException, IOException {
        // 建立schema工厂
        SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
        // 建立验证文档文件对象,利用此文件对象所封装的文件进行schema验证
        File schemaFile = new File(xsdPath);
        // 利用schema工厂,接收验证文档文件对象生成Schema对象
        Schema schema = schemaFactory.newSchema(schemaFile);
        // 通过Schema产生针对于此Schema的验证器,利用schenaFile进行验证
        Validator validator = schema.newValidator();
        // 得到验证的数据源
        Source source = new StreamSource(xmlPath);
        // 开始验证,成功输出success!!!,失败输出fail
         validator.validate(source);


        return true;
    }


}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值