java怎么样用xsd做验证

2025-04-26 08:57:18
推荐回答(1个)
回答1:

/**
* 使用XML Schema xml 文件,检验 XML 内容
* @param xmlStr 如果是对XML文件进行验证,用FileInputStream即可
* @return true:成功返回
* @throws SAXException
* @throws IOException
*/
public static boolean validate(String schemaLocaltion, String xmlStr)throws SAXException, IOException {
    //获取Schema工厂类,
    //这里的XMLConstants.W3C_XML_SCHEMA_NS_URI的值就是:
    //http://www.w3.org/2001/XMLSchema
    SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    // Schema实例
    Schema schema = null;
    //获取xsd文件,以流的方式读取到Source中xsd文件的位置相对于类文件位置
    Source schemaSource = new StreamSource(SchemaValidate.class.getResourceAsStream(schemaLocaltion));
    //实例化Schema对象
    schema = factory.newSchema(schemaSource);
    //这里是将一个DOM树对象转换成流对象,以便对DOM树对象验证
    ByteArrayInputStream bais = new ByteArrayInputStream(xmlStr.getBytes("UTF-8"));
    // 获取验证器,验证器的XML Schema源就是之前创建的Schema
    Validator validator = schema.newValidator();
    Source source = new StreamSource(bais);
    // 执行验证
    validator.validate(source);
    return true;
}