Maison > développement back-end > C++ > Comment valider un XML par rapport à un XSD référencé en C# ?

Comment valider un XML par rapport à un XSD référencé en C# ?

Barbara Streisand
Libérer: 2025-01-21 19:12:11
original
886 Les gens l'ont consulté

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

Valider XML avec un schéma XSD externe en C#

En C#, la validation d'un document XML par rapport à un schéma XSD externe peut généralement être réalisée en exploitant directement les informations fournies dans l'attribut xsi:schemaLocation du XML. Cependant, dans certains cas, une intervention manuelle est nécessaire pour effectuer la vérification.

Afin de valider automatiquement XML par rapport à un schéma spécifié, vous devez créer une instance de XmlReaderSettings et la lui transmettre lors de la création du XmlReader. En définissant ValidationType sur Schema et ValidationFlags pour inclure ProcessInlineSchema, ProcessSchemaLocation et ReportValidationWarnings, le lecteur traitera et validera automatiquement le XML par rapport au schéma référencé dans l'attribut xsi:schemaLocation.

Voici un extrait de code illustrant cette approche :

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);
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal