У меня есть следующий код, который успешно проверяет файл XML по схеме XSD:
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
Пример ошибки, которую я получаю:
The element 'address' has invalid child element 'zip_code'. List of possible elements expected: 'address_line_2, address_line_3, city'.
Когда я проверяю большой XML-файл с сотнями участников, у каждого из которых есть несколько адресов, этого недостаточно, чтобы точно определить проблему. Есть ли способ получить номер строки или положение файла или какой-либо другой полезный фрагмент данных, чтобы узнать, где именно проблема происходит в исходном файле XML? Я понимаю, что XmlReader не читает файл так же, как читатель текста, и XML может быть красиво отформатирован или находиться в одной гигантской строке, поэтому номера строк не обязательно являются подходящим способом. Казалось бы, я должен быть в состоянии сделать что-то внутри цикла While
, чтобы знать, в чем проблема, но я еще не нашел этого.