You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SaxonJ-HE 11基于XSD模式校验XML文档

结论

SaxonJ-HE(家庭版)确实支持基于XSD模式的XML报文校验。你看到的文档表述是准确的:11版本开始SaxonJ-HE实现了JAXP标准接口中定义的XML Schema校验能力,不需要额外购买商业授权即可使用。
注意:SaxonJ-HE仅支持W3C XML Schema 1.0标准,XSD 1.1相关特性需要使用专业版(PE)或企业版(EE)才可调用。

具体实现方法

SaxonJ-HE的XSD校验能力完全遵循JAXP标准API规范,不需要调用Saxon专属类即可完成开发,步骤如下:

  • 第一步:引入SaxonJ-HE依赖,以Maven项目为例,在pom.xml中添加如下依赖(版本选择11.0及以上即可):
<dependency>
    <groupId>net.sf.saxon</groupId>
    <artifactId>Saxon-HE</artifactId>
    <version>11.4</version>
</dependency>
  • 第二步:编写校验代码,核心逻辑如下:
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.File;

public class XmlXsdValidator {
    public static void validateXmlByXsd(String xsdPath, String xmlPath) throws Exception {
        // 初始化W3C XML Schema类型的Schema工厂,Saxon会自动通过SPI注册对应实现
        SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        // 加载XSD模式文件生成Schema实例
        Schema schema = schemaFactory.newSchema(new File(xsdPath));
        // 生成校验器
        Validator validator = schema.newValidator();
        // 执行校验,若XML不符合XSD规则会直接抛出SAXException
        validator.validate(new StreamSource(new File(xmlPath)));
    }

    public static void main(String[] args) throws Exception {
        validateXmlByXsd("src/main/resources/test.xsd", "src/main/resources/test.xml");
        System.out.println("XML校验通过,符合XSD规则要求");
    }
}
注意事项
  • 该特性仅在SaxonJ-HE 11.0及以上版本提供,10.x及更早的HE版本未内置XSD校验能力,使用旧版本会报找不到实现类的错误。
  • 如果项目中同时引入了其他JAXP Schema实现(比如JDK内置的Xerces、其他XML解析包),可能出现实现类加载冲突,可手动指定Saxon的实现类解决:
SchemaFactory schemaFactory = SchemaFactory.newInstance(
    XMLConstants.W3C_XML_SCHEMA_NS_URI,
    "net.sf.saxon.jaxp.SchemaFactoryImpl",
    null
);
  • 默认校验逻辑遇到错误会直接抛出异常终止流程,如果需要收集所有校验错误、自定义错误提示,可调用Validator的setErrorHandler方法传入自定义的错误处理器,按需处理不同级别的校验事件。

内容的提问来源于stack exchange,提问作者msciwoj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 10:36:24