Ich habe den folgenden Code, die eine XML-Datei gegen ein XSD-Schema erfolgreich validiert:Wie bekomme ich die Dateiposition eines XSD-Fehlers in der XML-Datei?
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
Eine Probe Fehler Ich erhalte ist
The element 'address' has invalid child element 'zip_code'. List of possible elements expected: 'address_line_2, address_line_3, city'.
Wenn ich die Validierung eine große XML-Datei mit Hunderte von Mitgliedern, die jeweils mehrere Adressen haben, sind nicht genug Informationen, um das Problem zu lokalisieren. Gibt es eine Möglichkeit, eine Zeilennummer oder Dateiposition oder andere hilfreiche Daten zu erhalten, um zu wissen, wo genau das Problem in der ursprünglichen XML-Datei auftritt? Ich stelle fest, dass XmlReader die Datei nicht auf die gleiche Weise liest wie ein Textleser, und das XML könnte schön formatiert sein oder auf einer riesigen Zeile, so dass Zeilennummern nicht unbedingt der richtige Weg sind. Es scheint, als ob ich in der Lage sein könnte, etwas in der Schleife zu tun, um zu wissen, wo das Problem liegt, aber ich habe es noch nicht gefunden.
Perfekt. Ich hatte vergessen, den spezifischen Fehlertyp zu erfassen, so dass ich nur die Eigenschaften für den generischen Exception-Handler und nicht den spezifischen XmlSchemaValidationException-Handler betrachtete, sodass ich die zusätzlichen Eigenschaften wie LineNumber und LinePosition nicht sah, die genau das sind brauchen. Vielen Dank! – gfrizzle