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

求推荐Schematron验证XML的C#/.NET库及解决Schematron.NET无效问题

可用的C#/.NET Schematron验证类库
  • Schematron.NET:轻量原生.NET库,支持基础Schematron规则验证,但文档较简略,需注意调用逻辑
  • Saxon-HE .NET:开源XSLT/XQuery处理器,可将Schematron规则转换为XSLT样式表后验证XML,支持复杂Schematron特性(如抽象模式、变量等)
  • XmlPrime:商业级XML处理库,内置Schematron验证支持,适配企业级场景
修复你的Schematron.NET验证失效问题

你的代码存在两个核心问题:

  1. 未正确获取验证结果:Schematron.NET的验证错误通常不会直接抛出异常,而是通过返回的结果集体现
  2. 调用流程错误:Validate和ValidateSchematron的用法不符合库的设计逻辑

修正后的代码示例:

try
{
    using (var xrXML = XmlReader.Create("xmlData.xml"))
    using (var xrSch = XmlReader.Create("schematron.sch"))
    {
        Validator validator = new Validator();
        Schema schema = new Schema();
        schema.Load(xrSch);
        validator.AddSchema(schema);

        // 执行验证并获取结果
        ValidationResult result = validator.Validate(xrXML);

        // 检查验证结果
        if (!result.IsValid)
        {
            foreach (var error in result.Errors)
            {
                Console.WriteLine($"验证错误: {error.Message}");
                Console.WriteLine($"位置: 行{error.LineNumber}, 列{error.LinePosition}");
            }
        }
        else
        {
            Console.WriteLine("XML验证通过");
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine($"发生异常: {ex.Message}");
}

额外注意事项:

  • 确保你的Schematron文件(schematron.sch)格式正确,无语法错误
  • 若使用旧版本Schematron.NET,可能存在规则兼容性问题,建议尝试更新至最新版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 04:27:02