XmlSchemaSet 是 .NET 中编译、验证和缓存 XSD 的核心类,支持多模式合并、依赖解析与线程安全复用;需手动添加所有 import/include 的 Schema 并调用 Compile(),配合 ValidationEventHandler 可调试错误。
XmlSchemaSet 是 .NET 中用于编译、验证和缓存 XML Schema(XSD)的核心类。它替代了已过时的 XmlSchemaCollection,支持多模式合并、重复定义检测、命名空间隔离,并能高效复用已编译的 Schema。
最常见场景是读取本地 .xsd 文件,编译成可验证的内部表示:
XmlSchemaSet 实例(可指定 XmlNameTable 优化性能)Add() 方法传入目标命名空间和文件路径(或 XmlReader)Compile() —— 此步真正解析语法、检查约束、构建验证模型示例:
var schemas = new XmlSchemaSet();
schemas.Add("http://example.com/order", "order.xsd"); // 命名空间必须匹配 targetNamespace
schemas.Compile(); // 编译失败会抛出 XmlSchemaException
XmlSchemaSet 自动处理 、 和 ,前提是所有被引用的 Schema 都已加入集合中:
targetNamespace,否则 import 无法解析Compile() 会递归解析全部依赖,发现循环引用或缺失文件时抛异常注意:不支持从 HTTP URL 自动下载远程 schemaLocation,需手动加载并 Add 所有依赖项。
编译后的 XmlSchemaSet 是线程安全的,可全局共享,避免重复编译开销:
XmlReaderSettings.Schemas 即可复用XmlSchemaSet 并替换旧实例,避免并发修改问题验证示例:
var settings = new XmlReaderSettings { Schemas = schemas };
settings.ValidationType = ValidationType.Schema;
using var reader = XmlReader.Create("order.xml", settings);
while (reader.Read()) { } // 触发验证
编译或验证失败时,默认只抛异常。可通过 ValidationEventHandler 捕获详细信息:
Add() 前或 Compile() 前设置 schemas.ValidationEventHandler
ValidationEventArgs 包含错误级别(Warning/ Error)、消息、源文件和行号示例:
schemas.ValidationEventHandler += (sender, e) =>
{
Console.WriteLine($"{e.Severity}: {e.Message} at {e.Exception?.LineNumber}");
};
# mac
# c#
# 编译错误
# .net
# red
# 命名空间
# include
# xml
# Error
# 递归
# 循环
# 线程
# 并发
# 事件
# http
# 复用
# 行号
# 多模
# 加载
# 多个
# 自定义
# 不支持
# 都已
# 可通过
相关文章:
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
如何配置支付宝与微信支付功能?
如何制作网站标识牌,动态网站如何制作(教程)?
如何快速搭建高效香港服务器网站?
中山网站推广排名,中山信息港登录入口?
如何用y主机助手快速搭建网站?
如何用腾讯建站主机快速创建免费网站?
浅析上传头像示例及其注意事项
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
成都网站制作报价公司,成都工业用气开户费用?
网站制作服务平台,有什么网站可以发布本地服务信息?
如何快速查询网站的真实建站时间?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星安装步骤有哪些常见问题?
网站制作公司排行榜,四大门户网站排名?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何高效搭建专业期货交易平台网站?
制作企业网站建设方案,怎样建设一个公司网站?
香港服务器如何优化才能显著提升网站加载速度?
建站之星代理费用多少?最新价格详情介绍
代刷网站制作软件,别人代刷火车票靠谱吗?
如何零基础开发自助建站系统?完整教程解析
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何获取免费开源的自助建站系统源码?
建站主机SSH密钥生成步骤及常见问题解答?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
临沂网站制作公司有哪些,临沂第四中学官网?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
建站之星与建站宝盒如何选择最佳方案?
建站OpenVZ教程与优化策略:配置指南与性能提升
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何在橙子建站中快速调整背景颜色?
高防服务器:AI智能防御DDoS攻击与数据安全保障
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
如何用狗爹虚拟主机快速搭建网站?
山东云建站价格为何差异显著?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
实例解析angularjs的filter过滤器
C++用Dijkstra(迪杰斯特拉)算法求最短路径
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何安全更换建站之星模板并保留数据?
高端云建站费用究竟需要多少预算?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何用IIS7快速搭建并优化网站站点?
建站与域名管理如何高效结合?
如何快速搭建自助建站会员专属系统?
如何快速重置建站主机并恢复默认配置?
北京网站制作网页,网站升级改版需要多久?
*请认真填写需求信息,我们会在24小时内与您取得联系。