Comment faire pour contrôler les fragments XML avec un schéma XML dans Visual Basic .NET

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 317463
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Les espaces de noms bibliothèque de classes .NET Framework suivants sont référencés dans cet article : System.XML Pour une version de Visual C# .NET de cet article, voir 318504.

DE CETTE TÂCHE

Résumé
Cet article étape par étape explique comment utiliser des objets XmlValidatingReader et XMLSchemaCollection pour valider un fragment XML (Extensible Markup Language) par rapport à un schéma XML.

XmlValidatingReader implémente la classe XmlReader et fournit de prise en charge pour la validation de données XML. La propriété de schémas de XmlValidatingReader connecte au lecteur aux fichiers de schéma mis en cache dans un XmlSchemaCollection . La propriété ValidationType de XmlValidatingReader spécifie le type de validation que le lecteur doit exécuter. Si vous définissez la propriété à ValidationType.None , vous pouvez créer un lecteur nonvalidating.

Vous pouvez uniquement ajouter des schémas XML Schema Definition Language (XSD) et les schémas (XML-Data REDUCED) à XmlSchemaCollection . Utilisez la méthode Add avec un URI d'espace de noms pour charger des schémas. Des schémas XML, l'URI d'espace de noms standard est la propriété espace de noms cible du schéma.

back to the top

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous aurez besoin :
  • Microsoft Visual Studio .NET est installé sur un système d'exploitation Microsoft Windows compatible
Cet article suppose que vous êtes familiarisé avec les sujets suivants :
  • Visual Basic .NET
  • Base des normes XML
  • LES schémas XSD
back to the top

Créer un schéma XSD

Collez le code suivant dans un nouveau fichier texte nommé C:\Books.xsd :
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:bookstore-schema" elementFormDefault="qualified" targetNamespace="urn:bookstore-schema">	<xsd:element name="bookstore" type="bookstoreType" />	<xsd:element name="comment" type="xsd:string" />	<xsd:element name="author" type="authorName"/>	<xsd:complexType name="authorName">		<xsd:sequence>			<xsd:element name="first-name" type="xsd:string" />			<xsd:element name="last-name" type="xsd:string" />		</xsd:sequence>	</xsd:complexType>	<xsd:complexType name="bookstoreType">		<xsd:sequence maxOccurs="unbounded">			<xsd:element name="book" type="bookType" />			<xsd:element ref="comment" minOccurs="0" />		</xsd:sequence>	</xsd:complexType>	<xsd:complexType name="bookType">		<xsd:sequence>			<xsd:element name="title" type="xsd:string" />			<xsd:element ref="author" />			<xsd:element name="price" type="xsd:decimal" />		</xsd:sequence>		<xsd:attribute name="genre" type="xsd:string" />	</xsd:complexType>	</xsd:schema>				
back to the top

Créer une application .NET de Visual Basic

  1. Créer un nouveau Visual Basic .NET Windows application.
  2. Faites glisser Button1 à Form1. Collez le code suivant pour ajouter une variable membre privée à classe Form1 :
    Dim m_success As Boolean					
  3. Collez la procédure sub suivante pour créer un ValidationEventHandler qui génère des erreurs de validation de l'objet XMLValidatingReader :
    Public Sub ValidationEventHandle(ByVal sender As Object, ByVal args As ValidationEventArgs)        m_success = False        Console.WriteLine((ControlChars.CrLf & ControlChars.Tab & "Validation error: " & args.Message))    End Sub 'ValidationEventHandle						
    Remarque : vous devez inclure un gestionnaire d'événements pour recevoir des informations sur les erreurs de validation de données type définition (DTD), le XML-Data (REDUCED) schéma et le schéma de langage (XSD) de définition schéma XML. Le gestionnaire d'événements reçoit un argument de type ValidationEventArgs qui contient des données relatives à cet événement.

    Le gestionnaire de rappel pouvez utiliser la propriété ValidationEventArgs.severity afin de garantir qu'un document d'instance XML est validé par rapport à un schéma. La propriété gravité permet vous permettra de distinguer plus facilement une erreur de validation ( gravité est égale à XmlSeverityType.Error ) qui indique une erreur irrécupérable et un contrôle avertissement ( gravité est égale à XmlSeverityType.Warning ) qui indique qu'aucune information de schéma est disponible.
  4. Collez le code suivant dans la procédure d'événement Button1_Click :
            Dim reader As XmlValidatingReader = Nothing        Dim myschema As New XmlSchemaCollection()        Try            'Create the XML fragment to be parsed.            Dim xmlFrag As String = "<author  xmlns='urn:bookstore-schema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" & _                            "<first-name>Herman</first-name>" & _                           "<last-name>Melville</last-name>" & _                         "</author>"            'Create the XmlParserContext.            Dim context As New XmlParserContext(Nothing, Nothing, "", XmlSpace.None)                       'Implement the reader.             reader = New XmlValidatingReader(xmlFrag, XmlNodeType.Element, context)            'Add the schema.            myschema.Add("urn:bookstore-schema", "Books.xsd")            'Set the schema type and add the schema to the reader.            reader.ValidationType = ValidationType.Schema            reader.Schemas.Add(myschema)            'Add the handler to raise the validation event.            AddHandler reader.ValidationEventHandler, AddressOf Me.ValidationEventHandle            While reader.Read            End While            Console.WriteLine("Completed validating xmlfragment")        Catch XmlExp As XmlException            Console.WriteLine(XmlExp.Message)        Catch XmlSchExp As XmlSchemaException            Console.WriteLine(XmlSchExp.Message)        Catch GenExp As Exception            Console.WriteLine(GenExp.Message)        End Try    End Sub					
  5. Lorsque le message suivant s'affiche dans la fenêtre de sortie, le fragment XML est un élément valide :
    Completed validating xmlfragment					
Remarque : l'objet XMLValidatingReader valide les déclarations de type et les éléments de niveau supérieur dans le schéma XML. Fragments XML, tels que les éléments sub, sont considérés comme local. Vous ne pouvez pas passer fragments XML aux XmlValidatingReader pour la validation directe à moins que vous déclarez les fragments XML comme des éléments de niveau supérieur et définissez la référence du niveau requis.

back to the top
Références
Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
307379 Comment faire pour valider un document XML à l'aide de DTD, XDR ou XSD dans Visual C# .NET
313826 INFO : Présentation des schémas XML dans le .NET Framework
313651 INFO : programme de XML dans le .NET Framework
Pour plus d'informations, consultez MSDN suivant sites Web : back to the top

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 317463 - Dernière mise à jour : 12/07/2015 08:53:27 - Révision : 2.2

Microsoft Visual Basic .NET 2003 Initiation, Microsoft Visual Basic .NET 2002 Initiation, Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.0

  • kbnosurvey kbarchive kbmt kbhowtomaster KB317463 KbMtfr
Commentaires