je le code suivant qui valide avec succès un fichier XML par rapport à un schéma XSD:Comment obtenir la position du fichier d'une erreur XSD dans le fichier XML?
Try
Dim val As New Xml.XmlReaderSettings With {.ValidationType = ValidationType.Schema}
val.Schemas.Add(Nothing, "myvalidator.xsd")
Using reader = XmlReader.Create("myfile.xml", val)
While reader.Read
End While
End Using
Console.WriteLine("XML validation succeeded.")
Catch ex As Exception
Console.WriteLine("XML validation failed." & vbCr & vbLf & "Error Message: " & ex.Message)
End Try
Une erreur d'exemple que je reçois est
The element 'address' has invalid child element 'zip_code'. List of possible elements expected: 'address_line_2, address_line_3, city'.
Quand je valider un grand fichier XML avec des centaines de membres qui ont chacun plusieurs adresses, ce n'est pas assez d'informations pour identifier le problème. Existe-t-il un moyen d'obtenir un numéro de ligne, une position de fichier ou d'autres données utiles pour savoir exactement où se trouve le problème dans le fichier XML d'origine? Je réalise que XmlReader ne lit pas le fichier de la même manière qu'un lecteur de texte, et que le XML peut être bien formaté ou sur une ligne géante, donc les numéros de ligne ne sont pas forcément le chemin à parcourir. Il semblerait que je devrais être capable de faire quelque chose à l'intérieur de la boucle While
pour savoir où est le problème, mais je ne l'ai pas encore trouvé.
Parfait. J'avais oublié de piéger le type d'erreur spécifique, donc je ne regardais que les propriétés du gestionnaire d'exceptions générique, et non le gestionnaire XmlSchemaValidationException spécifique, donc je ne voyais pas les propriétés supplémentaires comme LineNumber et LinePosition, qui sont exactement ce que je avoir besoin. Merci! – gfrizzle