Use Schema xsd file to verify xml file format

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;
        }
    }

}

Guess you like

Origin blog.csdn.net/catoop/article/details/130424193