首頁 > 後端開發 > C++ > 如何在 C# 中根據引用的 XSD 驗證 XML?

如何在 C# 中根據引用的 XSD 驗證 XML?

Barbara Streisand
發布: 2025-01-21 19:12:11
原創
831 人瀏覽過

How to Validate an XML Against a Referenced XSD in C#?

在C#中驗證XML與外部XSD模式

在C#中,驗證XML文件與外部XSD模式通常可以透過直接利用XML的xsi:schemaLocation屬性中提供的資訊來實現。但是,在某些情況下,需要手動幹預才能執行驗證。

為了自動根據指定的模式驗證XML,需要建立一個XmlReaderSettings實例,並在建立XmlReader時將其傳遞給它。透過將ValidationType設定為Schema,並將ValidationFlags設定為包含ProcessInlineSchemaProcessSchemaLocationReportValidationWarnings,讀取器將自動處理並根據xsi:schemaLocation屬性中引用的模式驗證XML。

以下是一個示範此方法的程式碼片段:

<code class="language-csharp">using System.Xml;
using System.Xml.Schema;
using System.IO;

public class ValidXSD
{
    public static void Main()
    {
        // 设置验证设置。
        XmlReaderSettings settings = new XmlReaderSettings();
        settings.ValidationType = ValidationType.Schema;
        settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
        settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
        settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
        settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);

        // 创建XmlReader对象。
        XmlReader reader = XmlReader.Create("inlineSchema.xml", settings);

        // 解析文件。
        while (reader.Read()) ;
    }

    // 显示任何警告或错误。
    private static void ValidationCallBack(object sender, ValidationEventArgs args)
    {
        if (args.Severity == XmlSeverityType.Warning)
            Console.WriteLine("\t警告:未找到匹配的模式。未进行验证。" + args.Message);
        else
            Console.WriteLine("\t验证错误: " + args.Message);
    }
}</code>
登入後複製

以上是如何在 C# 中根據引用的 XSD 驗證 XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板