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.
Public Class AccueilDim m_Success As BooleanDim strinLog As String = ""Public Enum ValidationEntreeTypesXML_URI = 1XML_TEXT_XML_string = 2TEST = 3End Enum
''' <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 Booleanm_Success = TruestrinLog = ""Select Case ValidationEntreeCase ValidationEntreeTypes.XML_URITryDim XML_Settings As New XmlReaderSettingsXML_Settings.Schemas.Add(Nothing, schemaURI)XML_Settings.ValidationType = ValidationType.SchemaAddHandler XML_Settings.ValidationEventHandler, AddressOf ValidationCallBackDim URI_XMlreader As XmlReader = XmlReader.Create(DocString, XML_Settings)While URI_XMlreader.Read()End WhileCatch ex As ExceptionEnd TryCase ValidationEntreeTypes.XML_TEXT_XML_stringTryDim XML_Settings As New XmlReaderSettingsXML_Settings.Schemas.Add(Nothing, schemaURI)XML_Settings.ValidationType = ValidationType.SchemaXML_Settings.ConformanceLevel = ConformanceLevel.AutoAddHandler XML_Settings.ValidationEventHandler,
AddressOf ValidationCallBackDim XmlDoc AsNew XmlDocumentXmlDoc.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 WhileCatch ex As ExceptionEnd TryEnd SelectReturn m_SuccessEnd Function''' <summary>''' Appelé par la function validateXML lorsqu'une erreur survient''' lors de la validation du document XML par le schéma''' </summary>''' <param name="sender"></param>''' <param name="args"></param>''' <remarks></remarks>Private Sub ValidationCallBack(ByVal sender As Object, ByVal args As Schema.ValidationEventArgs)m_Success = False 'Validation failedstrinLog += vbCrLf & args.Message & vbCrLf 'écriture de l'erreurEnd SubEnd Class