在C#中用XSD验证XML需三步:加载XSD到XmlSchemaSet并赋给XmlReaderSettings.Schemas;设置ValidationType.Schema并订阅ValidationEventHandler;用XmlReader.Create创建验证读取器,循环Read()完成全量验证。

在C#中用XSD验证XML文件,核心是使用 XmlSchemaSet 加载XSD,再通过 XmlReaderSettings 启用验证,并创建带验证功能的 XmlReader 来读取XML。只要XML内容不符合XSD定义的结构或数据类型,就会触发验证事件并报告错误。
准备XSD和XML文件
确保你有配套的XSD文件(如 data.xsd)和待验证的XML文件(如 data.xml)。XSD必须能正确描述XML的元素、属性、命名空间和数据类型。如果XML用了命名空间,XSD中对应 targetNamespace 必须匹配,且XML根节点要声明相同命名空间。
加载XSD并配置验证设置
用 XmlSchemaSet 加载XSD,再将其赋给 XmlReaderSettings.Schemas;同时把 ValidationType 设为 ValidationType.Schema,并订阅 ValidationEventHandler 捕获错误:
- 不设置
ValidationEventHandler时,验证失败会直接抛出XmlSchemaValidationException - 推荐用事件方式收集所有错误,而不是中断处理
- 若XSD引用了其他XSD(如
xs:include或xs:import),确保路径可访问,或用XmlSchemaSet.Add()显式加载全部
执行验证并获取结果
用 XmlReader.Create(string, XmlReaderSettings) 创建验证型读取器,然后调用 Read() 遍历整个XML——验证会在读取过程中自动发生:
还木有评论哦,快来抢沙发吧~