Maison >développement back-end >C++ >Comment valider XML par rapport à un schéma XSD référencé en C# ?
Validation XML C# par rapport au schéma XSD référencé
Garantir la validité des documents XML par rapport à un schéma défini est crucial. Cet article illustre la validation XML C# à l'aide de la classe XmlDocument
par rapport à un schéma XSD.
Contrairement au comportement par défaut, XmlDocument
ne valide pas automatiquement par rapport aux schémas intégrés dans le XML. Pour activer cela, nous allons configurer XmlReaderSettings
. Plus précisément, nous définissons ValidationType
sur Schema
et utilisons ValidationFlags
pour traiter les schémas en ligne, les emplacements de schéma et signaler les avertissements.
<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>
Ensuite, créez un XmlReader
en utilisant ces paramètres et enregistrez un ValidationEventHandler
pour capturer les résultats de validation.
<code class="language-csharp">XmlReader reader = XmlReader.Create("inlineSchema.xml", settings); reader.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);</code>
La méthode ValidationCallBack
traite les événements de validation :
<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>
Cette méthode simplifiée valide automatiquement le XML par rapport à son schéma intégré, éliminant ainsi le besoin de chargement manuel du schéma dans l'objet XmlDocument
. La fonction ValidationCallBack
fournit des avertissements et des messages d'erreur clairs.
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!