begin process at 2010 03 16 01:22:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VB.NET

 > XML VALIDATION PAR SCHÉMA (XSD)

XML VALIDATION PAR SCHÉMA (XSD)


 Information sur la source

Note :
2 / 10 - par 1 personne
2,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VB.NET Source .NET ( DotNet ) Classé sous :xml, schémas, xsd Niveau :Débutant Date de création :28/08/2006 Date de mise à jour :01/09/2006 15:06:39 Vu / téléchargé :13 069 / 34 025

Auteur : saizonou

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

J'ai trouvé un peu partout comment valider un document XML à partir du fichier physique.
J'avais besoin de le faire sans opération de lecture/écriture sur le disque mais à partir d'un "XMLdocument".
Voici donc le code qui permet de valider mon XML qu'il soit sur le disque ou à partir d'une variable string.

Source

  • ''' <summary>
  • ''' Valide les données XML d'un document par un schéma
  • ''' </summary>
  • ''' <param name="schemaURI">URI du schéma XSD</param>
  • ''' <param name="DocString">URI ou String XML</param>
  • ''' <param name="ValidationEntree">La source XML est elle un string xml ou l'uti d'un fichier XML</param>
  • ''' <returns>valide (OUI/NON) </returns>
  • ''' <remarks></remarks>
  • Public Function validateXML(ByVal schemaURI As String, ByVal DocString As String, Optional ByVal ValidationEntree As ValidationEntreeTypes = ValidationEntreeTypes.XML_URI) As Boolean
  • m_Success = True
  • strinLog = ""
  • Select Case ValidationEntree
  • Case ValidationEntreeTypes.XML_URI
  • Try
  • Dim XML_Settings As New XmlReaderSettings
  • XML_Settings.Schemas.Add(Nothing, schemaURI)
  • XML_Settings.ValidationType = ValidationType.Schema
  • AddHandler XML_Settings.ValidationEventHandler, AddressOf ValidationCallBack
  • Dim URI_XMlreader As XmlReader = XmlReader.Create(DocString, XML_Settings)
  • While URI_XMlreader.Read()
  • End While
  • Catch ex As Exception
  • End Try
  • Case ValidationEntreeTypes.XML_TEXT_XML_string
  • Try
  • Dim XML_Settings As New XmlReaderSettings
  • XML_Settings.Schemas.Add(Nothing, schemaURI)
  • XML_Settings.ValidationType = ValidationType.Schema
  • XML_Settings.ConformanceLevel = ConformanceLevel.Auto
  • AddHandler XML_Settings.ValidationEventHandler, AddressOf ValidationCallBack
  • Dim XmlDoc As New XmlDocument
  • XmlDoc.LoadXml(DocString)
  • Dim navigator As XPath.XPathNavigator = XmlDoc.CreateNavigator()
  • Dim URI_XMlreader As XmlReader = XmlReader.Create(navigator.ReadSubtree(), XML_Settings)
  • While URI_XMlreader.Read()
  • End While
  • Catch ex As Exception
  • Return False
  • End Try
  • Case ValidationEntreeTypes.TEST
  • Try
  • Dim settings As XmlReaderSettings = New XmlReaderSettings()
  • settings.Schemas.Add(Nothing, schemaURI)
  • settings.ValidationType = ValidationType.Schema
  • AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
  • '_________________________________________________________
  • Dim xmldoc As New XmlDocument
  • xmldoc.Load(DocString)
  • Dim memStream As New MemoryStream()
  • xmldoc.Save(memStream)
  • memStream.Seek(0, SeekOrigin.Begin)
  • Dim reader As XmlReader = XmlReader.Create(memStream, settings)
  • '_________________________________________________________
  • Dim document As XmlDocument = New XmlDocument()
  • document.Load(reader)
  • Dim eventHandler As ValidationEventHandler = New ValidationEventHandler(AddressOf ValidationCallBack)
  • document.Validate(eventHandler)
  • Catch ex As Exception
  • End Try
  • End Select
  • Return m_Success
  • End Function
''' <summary>
''' Valide les données XML d'un document par un schéma
''' </summary>
''' <param name="schemaURI">URI du schéma XSD</param>
''' <param name="DocString">URI ou String XML</param>
''' <param name="ValidationEntree">La source XML est elle un string xml ou l'uti d'un fichier XML</param>
''' <returns>valide (OUI/NON) </returns>
''' <remarks></remarks>
Public Function validateXML(ByVal schemaURI As String, ByVal DocString As String, Optional ByVal ValidationEntree As ValidationEntreeTypes = ValidationEntreeTypes.XML_URI) As Boolean
        m_Success = True

        strinLog = ""

        Select Case ValidationEntree
            Case ValidationEntreeTypes.XML_URI
                Try
                    Dim XML_Settings As New XmlReaderSettings
                    XML_Settings.Schemas.Add(Nothing, schemaURI)
                    XML_Settings.ValidationType = ValidationType.Schema
                    AddHandler XML_Settings.ValidationEventHandler, AddressOf ValidationCallBack
                    Dim URI_XMlreader As XmlReader = XmlReader.Create(DocString, XML_Settings)
                    While URI_XMlreader.Read()
                    End While
                Catch ex As Exception

                End Try
            Case ValidationEntreeTypes.XML_TEXT_XML_string

                Try
                    Dim XML_Settings As New XmlReaderSettings
                    XML_Settings.Schemas.Add(Nothing, schemaURI)
                    XML_Settings.ValidationType = ValidationType.Schema
                    XML_Settings.ConformanceLevel = ConformanceLevel.Auto

                    AddHandler XML_Settings.ValidationEventHandler, AddressOf ValidationCallBack

                    Dim XmlDoc As New XmlDocument
                    XmlDoc.LoadXml(DocString)
                    Dim navigator As XPath.XPathNavigator = XmlDoc.CreateNavigator()

                    Dim URI_XMlreader As XmlReader = XmlReader.Create(navigator.ReadSubtree(), XML_Settings)
                    While URI_XMlreader.Read()
                    End While
                    

                Catch ex As Exception
                    Return False
                End Try
            Case ValidationEntreeTypes.TEST
                Try
                    Dim settings As XmlReaderSettings = New XmlReaderSettings()
                    settings.Schemas.Add(Nothing, schemaURI)
                    settings.ValidationType = ValidationType.Schema
                    AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
                    '_________________________________________________________
                    Dim xmldoc As New XmlDocument
                    xmldoc.Load(DocString)

                    Dim memStream As New MemoryStream()
                    xmldoc.Save(memStream)
                    memStream.Seek(0, SeekOrigin.Begin)
                    Dim reader As XmlReader = XmlReader.Create(memStream, settings)
                    '_________________________________________________________
                    Dim document As XmlDocument = New XmlDocument()
                    document.Load(reader)

                    Dim eventHandler As ValidationEventHandler = New ValidationEventHandler(AddressOf ValidationCallBack)
                    document.Validate(eventHandler)
                Catch ex As Exception

                End Try
        End Select

        Return m_Success

    End Function

 Conclusion

fichiers exemples :
  annuaire.xml
  BAD_annuaire.xml
  SchemaAnnuaire.xsd

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

01 septembre 2006 15:06:39 :
Voilà une amélioration de la fonction validateXML pour l'entrée string, la solution est un peu moins tarabiscoté que celle utilisée dans le source. (J'ai laissé l'autre méthode dans le "case ValidationEntreeTypes.TEST") Notez le "XML_Settings.ConformanceLevel = ConformanceLevel.Auto" la validation du XpathNavigator détecte ainsi toute seulle s'i s'agit de valider un document XML entier ou un fragment de doc XML.

 Sources du même auteur

Source .NET (Dotnet) RTF TO XHTML (BALISES P, H3, STRONG, EM)
Source .NET (Dotnet) CLASSE POUR L'UTILISATION D'EXPRESSIONS RÉGULIÈRES
Source .NET (Dotnet) DOTNET 2.0 TRANSFORMATION XSLT D'UN FICHIER XML (VB.NET)
Source avec une capture SERVERXMLHTTP : AUTOMATISATION D'ENVOI D'UN FORMULAIRE AVEC...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) SÉRIALISTION - DÉSERIALISATION DE TABLEAUX ET COLLECTIONS par AlexMS
Source avec Zip Source avec une capture Source .NET (Dotnet) [LAMEGRID] SÉRIALISATION - DÉSERIALISATION par AlexMS
Source avec Zip Source avec une capture Source .NET (Dotnet) INSERER TOUT TYPE DE FICHIERS DANS ORACLE EN VB.NET par SKY32
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOYER DES EMAILS AVEC PIECES JOINTES EN EXÉCUTANT BLAT par mays
Source avec Zip Source avec une capture Source .NET (Dotnet) PILOTER DES AFFICHEURS 7 SEGMENTS À PARTIR DU PORT SÉRIE OU ... par mays

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) PARSEUR XML par cyrilremy
Source avec Zip Source avec une capture Source .NET (Dotnet) APPLICATION GPS POUR POCKET PC par errun54
Source avec Zip Source avec une capture Source .NET (Dotnet) VALIDEUR DE FICHIER XML XSD par denpx
Source avec Zip Source avec une capture Source .NET (Dotnet) EDITEUR COMPLET XML-DTD-SCHEMA XSD-TRANSFORMATION XSL/XSLT +... par romagny13
Source avec Zip Source avec une capture Source .NET (Dotnet) OUTILS XML, GESTION D'UNE LISTVIEW, XSD par capuccino_fr

Commentaires et avis

Commentaire de eboulian le 18/12/2006 21:00:22

Je cherche un programme qui permettrait à partir d'un fichier schéma (.XSD) de créer une seule table dans SQL Server. J'entends par une seule table que chaque élément (incluant tout attribut) du schéma correspondrait à un champ de la table.

J'ai essayé XMLSpy mais, d'après ce que j'ai vu c'est qu'il crée plutôt un enregistrement par élément. Et puis c'est la même chose pour les attributs mais dans une autre table.

D'après mes recherches, je n'ai pas trouvé ce que je voulais et je crois que je vais devoir faire un programme très personnalisé.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Traitement des données d'un fichier ".XSD" en VB [ par epsitof ] Bonjour à tous,Je passe cette annonce car j'ai besoin d'une très grande aide, elle est urgente.Voila, j'ai un travail à faire donné par mon employeur, Help : lors de la validation XML je voudrais obtenir toutes les erreurs d'un seul coup [ par nad008 ] Bonjour, Actuellement pour tester si mon fichier XML est valide par rapport &#224; des sch&#233;mas&nbsp;XSD j'utilise le code suivant, celui-ci &#224 XSD SCHEMA et XML SQL 2005 [ par Troyan ] bonjour,j'utilise l'objet SQLXMLBulkload.4.0 pour importer mon xml dans une base SQL Server avec un schema XSD simple tout marche.mais j'aimerais pouv construire un fichier xml [ par olivier_1968 ] Bonsoir à tous,Je suis en train de travailler sur un projet qui me depasse un peu alors je me permet de demander un coup de main.Voila, je dois ecrire XML+XSD vers HTML [ par eSoluce ] Bonjour à tous,Je recherche désespérément un code source .NET VB pour pouvoir générer une pag html à partir d'un fichier XML et XSD.Quelqu'un peut-il extraction data XML sous excel2000 [ par durandalus ] Bonjour,Je voudrais faire une extraction de données d'un XML avec DTD sous excel 2000.Biensur avec du VBA sans à utiliser un parser xml ..je sais pas selectSingleNode syntaxe [ par CharlEm ] Bonjour,Je débute avec l'XML en VB6 donc ma question va surement vous sembler bien simple ... à moi non Récupérer une collection c'est ok mais récupér Lire XML (petit problème parce que c'est du html en fait) [ par veler ] Salut,Alors voila, il faudrait que je puisse lire un fichier HTML en VB.Net. J'utilise donc la lecture de XML puisque c'est à peu près la même chose.M Ajout de données dans un fichier xml [ par Wag ] Bonjour,J'ai 3 dataset qui pointent sur 3 base différentes (non liées), je souhaite ajouter le contenu de ces 3 datase dans un même fichier xml. Comme Enregistrer un Datagrid sous forme de fichier XML [ par KIPRE74 ] Bonjour à tous, j'ai un datagrid qui contient des valeurs. Je voudrais enregistrer le datagrid sous forme de fichier XML, mais je n'y arrive pas. Quel


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales