Java调用Schema校验xml文件

本文介绍了一种使用Schema校验XML文件的方法,并提供了一个实用的Java工具类实现。该工具类能够读取指定的XML字符串和XSD文件路径,通过Schema进行校验,判断XML文件是否符合XSD定义的规则。

**

  • 最近项目用到了xml文件传输(系统与系统之间)并用schema校验XML 特此做下记录:

**
自己写了一个工具类

public class XmlValidateUtil {

    private static final Log logger = LogFactory.getLog(XmlValidateUtil.class);
    private static final String SCHEMALANG = "http://www.w3.org/2001/XMLSchema";
    /** 
     * Schema校验xml文件 
     * @param xmlPath xml字符串 
     * @param xsdPath xsd文件路径 
     * @return xml文件是否符合xsd定义的规则 
     */  
    public static boolean xmlStringValidate(String xmlStr, String xsdPath) {  
        boolean flag = false;  
        try {  
            SchemaFactory factory = SchemaFactory.newInstance(SCHEMALANG);  
            //File schemaLocation = new File(xsdPath); 
            //Schema schema = factory.newSchema(schemaLocation);
            //代替上面注释内容  注释内容测试可用【为啥要这样写 下面做解释】
            InputStream inputStream =XmlValidateUtil.class.getResourceAsStream(xsdPath);
            Source xsdsource = new StreamSource(inputStream);  
            Schema schema = factory.newSchema(xsdsource); 
            Validator validator = schema.newValidator();  
            InputStream is = new ByteArrayInputStream(xmlStr.getBytes());  
            //需要设置编码   否则会出字节解析错误
            InputStreamReader in = new InputStreamReader(is, "UTF-8");
            Source source = new StreamSource(in);  
            try {  
                validator.validate(source);  
                flag = true;  
            } catch (SAXException ex) {
                logger.info("Schema校验xml文件 异常"+ex.getMessage());
            }  
        } catch (Exception e) {  
            logger.info("Schema校验xml文件 异常"+e.getMessage());
        }  
        return flag;  
  }  
}

xmd文件是放在src目录下的tyshschema文件夹下面
目录如图
这里写图片描述


**调用类代码**

//schema校验xml文件
            String xsdURL = "/tyshschema/test.xsd";
            boolean ifPass = XmlValidateUtil.xmlStringValidate(reportXml, xsdPath);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值