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

.NET Core 1.1.2中XML与XSD校验方法及相关报错咨询

我刚好对.NET Core 1.1.2的XML验证有了解,这个版本因为比较老旧,很多现代API还没加入,所以你遇到的报错都是因为API差异导致的,下面给你具体的解决方法:

.NET Core 1.1.2中验证XML的两种方式

1. 基础XML格式验证(检查语法合法性)

如果只是要验证XML的格式是否正确(比如标签是否闭合、语法是否合规),直接加载XML文档即可,格式错误会抛出XmlException:

using System.Xml;

try
{
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load("path/to/your/xml-file.xml"); // 可以是文件路径、流或者文本读取器
    Console.WriteLine("XML格式合法");
}
catch (XmlException ex)
{
    Console.WriteLine($"XML格式错误: {ex.Message}");
}

2. 基于XSD Schema的XML验证

你遇到的报错(找不到ValidationEventHandler、ValidationEventArgs,XmlReaderSettings没有Schemas属性),核心原因是.NET Core 1.1.2还没有引入这些现代API,需要用该版本支持的XmlDocument.Validate方法来实现,具体步骤如下:

第一步:添加必要的命名空间

确保代码顶部引用了以下命名空间(这两个是解决类型找不到问题的关键):

using System.Xml;
using System.Xml.Schema;

第二步:完整验证代码示例

// 1. 加载XSD Schema到XmlSchemaSet
XmlSchemaSet schemaSet = new XmlSchemaSet();
// 第一个参数是Schema的命名空间,null表示使用默认命名空间;第二个参数是XSD文件路径/流/读取器
schemaSet.Add(null, "path/to/your/schema-file.xsd");

// 2. 加载要验证的XML文档
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("path/to/your/xml-file.xml");

// 3. 执行验证并处理错误
bool isXmlValid = true;
xmlDoc.Validate((sender, args) =>
{
    // 捕获验证过程中的所有错误
    Console.WriteLine($"验证错误: {args.Message}");
    isXmlValid = false;
}, schemaSet);

// 输出验证结果
if (isXmlValid)
{
    Console.WriteLine("XML完全符合XSD Schema要求");
}
else
{
    Console.WriteLine("XML不符合XSD Schema要求");
}

关键说明

  • .NET Core 1.1.2中XmlReaderSettings.Schemas属性尚未实现,因此不能用XmlReader的方式关联Schema,必须通过XmlDocument.Validate方法传入XmlSchemaSet
  • ValidationEventHandler委托和ValidationEventArgs类都属于System.Xml.Schema命名空间,必须添加该命名空间引用才能使用
  • 验证过程中,默认会继续检查所有错误,不会因为单个错误终止,你可以在事件处理方法里根据需求决定是否终止验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:37:35