首页 >后端开发 >C++ >如何在 C# 中根据引用的 XSD 架构验证 XML?

如何在 C# 中根据引用的 XSD 架构验证 XML?

Linda Hamilton
Linda Hamilton原创
2025-01-21 18:57:09556浏览

How to Validate XML against a Referenced XSD Schema in C#?

针对引用的 XSD 架构进行 C# XML 验证

确保 XML 文档针对已定义模式的有效性至关重要。 本文演示了使用 XmlDocument 类针对 XSD 架构进行 C# XML 验证。

与默认行为不同,XmlDocument 不会自动验证 XML 中嵌入的架构。 为了启用此功能,我们将配置XmlReaderSettings。 具体来说,我们将 ValidationType 设置为 Schema 并利用 ValidationFlags 处理内联模式、模式位置并报告警告。

<code class="language-csharp">XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;</code>

接下来,使用这些设置创建一个 XmlReader 并注册一个 ValidationEventHandler 来捕获验证结果。

<code class="language-csharp">XmlReader reader = XmlReader.Create("inlineSchema.xml", settings);
reader.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);</code>

ValidationCallBack 方法处理验证事件:

<code class="language-csharp">private static void ValidationCallBack(object sender, ValidationEventArgs args)
{
    if (args.Severity == XmlSeverityType.Warning)
        Console.WriteLine("\tWarning: " + args.Message);
    else
        Console.WriteLine("\tValidation error: " + args.Message);
}</code>

这种简化的方法会根据其嵌入的架构自动验证 XML,从而无需手动将架构加载到 XmlDocument 对象中。 ValidationCallBack 功能提供清晰的警告和错误消息。

以上是如何在 C# 中根据引用的 XSD 架构验证 XML?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn