This article is an example code tool class:
import org.xml.sax.SAXException;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import java.io.*;
/**
* 验证XML格式
*
* @date 2023-04-27 16:22
*/
public class XMLValidateUtils {
private XMLValidateUtils() {
// ignore
}
/**
* 使用 schema xsd 文件验证xml格式
*
* @param xsdPath
* @param xmlPath
* @return
*/
public static boolean validateXmlFile(String xsdPath, String xmlPath) throws FileNotFoundException {
return validateXml(xsdPath, new FileReader(xmlPath));
}
/**
* 使用 schema xsd 文件验证xml格式
*
* @param xsdPath
* @param xmlContent
* @return
*/
public static boolean validateXmlContent(String xsdPath, String xmlContent) {
return validateXml(xsdPath, new StringReader(xmlContent));
}
/**
* 使用 schema xsd 文件验证xml格式
*
* @param xsdPath
* @param reader
* @return
*/
public static boolean validateXml(String xsdPath, Reader reader) throws SAXException,IOException {
try (Reader xmlReader = reader) {
// 建立schema工厂
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// 建立验证文档文件对象,利用此文件对象所封装的文件进行schema验证
File schemaFile = new File(xsdPath);
// 利用schema工厂,接收验证文档文件对象生成Schema对象
Schema schema = schemaFactory.newSchema(schemaFile);
// 通过Schema产生针对于此Schema的验证器,利用schemaFile进行验证
Validator validator = schema.newValidator();
// 对xml数据源开始验证
validator.validate(new StreamSource(xmlReader));
return true;
}
}
}