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
Barbara Streisandoriginal
2025-01-21 19:12:11869parcourir

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 :

<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>

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:
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