175 votes

Validation d’un XML avec XSD référencé en c#

J'ai un fichier XML avec un schéma spécifié l'emplacement comme ceci:

xsi:schemaLocation="someurl ..\localSchemaPath.xsd"

Je veux valider en C#. Visual Studio, quand j'ouvre le fichier, le valide par rapport au schéma et répertorie les erreurs parfaitement. Cependant, je n'arrive pas à valider automatiquement en C# sans spécifier le schéma de validation de la sorte:

XmlDocument asset = new XmlDocument();

XmlTextReader schemaReader = new XmlTextReader("relativeSchemaPath");
XmlSchema schema = XmlSchema.Read(schemaReader, SchemaValidationHandler);

asset.Schemas.Add(schema);

asset.Load(filename);
asset.Validate(DocumentValidationHandler);

Ne devrais-je pas être en mesure de valider avec le schéma spécifié dans le fichier XML automatiquement ? Ce qui me manque ?

181voto

Chris McMillan Points 1194

Vous devez créer une instance de XmlReaderSettings et que passer à votre objet XmlReader lorsque vous le créez. Ensuite, vous pouvez vous abonner à l’objet ValidationEventHandler dans les paramètres de recevoir des erreurs de validation. Votre code finira par ressembler à ceci :

126voto

saluce Points 5086

Un moyen plus simple, si vous utilisez .NET 3.5, consiste à utiliser et validation.

Consultez la documentation MSDN pour plus d’assistance.

23voto

Soroush Points 101

L’exemple suivant valide un fichier XML et génère l’erreur approprié ou l’avertissement.

L’exemple précédent utilise les fichiers d’entrée suivants.

Books.xsd

13voto

Welbog Points 32952

J’avais fais ce genre de validation automatique en VB et voici comment je l’ai fait (converti en c#) :

Puis je me suis abonné à la `` événement lors de la lecture du fichier.

8voto

Denis Gladkiy Points 570

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X