Bouts de codes de Landry SAÏZONOU - Webmaster

Validation d'un XML via un schéma (XSD) en VB.NET

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.

 

  1. Public Class Accueil
  2.     Dim m_Success As Boolean
  3.     Dim strinLog As String = ""
  4.     
  5.  
  6.     Public Enum ValidationEntreeTypes
  7.         XML_URI = 1
  8.         XML_TEXT_XML_string = 2
  9.         TEST = 3
  10.     End Enum

 

  1. ''' <summary>
  2. ''' Valide les données XML d'un document par un schéma
  3. ''' </summary>
  4. ''' <param name="schemaURI">URI du schéma XSD</param>
  5. ''' <param name="DocString">URI ou String XML</param>
  6. ''' <param name="ValidationEntree">La source XML est elle un string xml ou l'uti d'un fichier XML</param>
  7. ''' <returns>valide (OUI/NON) </returns>
  8. ''' <remarks></remarks>
  9. Public Function validateXML(ByVal schemaURI As String, ByVal DocString As String, Optional ByVal ValidationEntree As ValidationEntreeTypes = ValidationEntreeTypes.XML_URI) As Boolean
  10.    m_Success = True
  11.  
  12.    strinLog = ""
  13.  
  14.    Select Case ValidationEntree
  15.       Case ValidationEntreeTypes.XML_URI
  16.           Try
  17.              Dim XML_Settings As New XmlReaderSettings
  18.              XML_Settings.Schemas.Add(Nothing, schemaURI)
  19.              XML_Settings.ValidationType = ValidationType.Schema
  20.              AddHandler XML_Settings.ValidationEventHandler, AddressOf              ValidationCallBack
  21.              Dim URI_XMlreader As XmlReader = XmlReader.Create(DocString, XML_Settings)
  22.              While URI_XMlreader.Read()
  23.              End While
  24.           Catch ex As Exception
  25.  
  26.           End Try
  27.       Case ValidationEntreeTypes.XML_TEXT_XML_string
  28.  
  29.           Try
  30.              Dim XML_Settings As New XmlReaderSettings
  31.              XML_Settings.Schemas.Add(Nothing, schemaURI)
  32.              XML_Settings.ValidationType = ValidationType.Schema
  33.              XML_Settings.ConformanceLevel = ConformanceLevel.Auto
  34.              AddHandler XML_Settings.ValidationEventHandler,
                       AddressOf ValidationCallBack
  35.              Dim XmlDoc AsNew XmlDocument
  36.              XmlDoc.LoadXml(DocString)
  37.              Dim navigator As XPath.XPathNavigator = XmlDoc.CreateNavigator()
  38.              Dim URI_XMlreader As XmlReader = XmlReader.Create(                     navigator.ReadSubtree(), XML_Settings)
  39.              While URI_XMlreader.Read()
  40.              End While
  41.            Catch ex As Exception
  42.            End Try
  43.     End Select
  44.  
  45.     Return m_Success
  46.  
  47. End Function
  48.  
  49. ''' <summary>
  50. ''' Appelé par la function validateXML lorsqu'une erreur survient
  51. ''' lors de la validation du document XML par le schéma
  52. ''' </summary>
  53. ''' <param name="sender"></param>
  54. ''' <param name="args"></param>
  55. ''' <remarks></remarks>
  56. Private Sub ValidationCallBack(ByVal sender As Object, ByVal args As Schema.ValidationEventArgs)
  57.         m_Success = False 'Validation failed
  58.         strinLog += vbCrLf & args.Message & vbCrLf 'écriture de l'erreur
  59. End Sub
  60.  
  61.  
  62.  
  63. End Class
  64.  

 

 


Valid XHTML 1.0 Transitional Valid CSS!