/**
* 使用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;
}