У меня есть вопрос о документации Microsoft MSDN для Extenstions.GetSchemaInfo Method (XElement) для .Net framework 4.0.
Я хочу знать, есть ли способ изнутри
Private Sub DumpInvalidNodes(ByVal el As XElement)
If el.GetSchemaInfo.Validity <> XmlSchemaValidity.Valid Then
...
End If
End Sub
Код для получения ValidationEventArgs.Message для недопустимого узла.Этот пример прекрасно работает, когда у вас есть пронумерованные узлы XML, как в примере: GrandChild1, GrandChild2.Вы можете сказать, какой неправильный узел создает ошибки проверки по сайту.Но когда у вас есть XML без нумерованных узлов, например,
<Root>
<Child>
<GrandChild>AAA</GrandChild>
<GrandChild>ZZZ</GrandChild>
<GrandChild>ZZZ</GrandChild>
</Child>
</Root>
, вы получите вывод, который выглядит следующим образом:
(1)Validating doc1 ...
(2)The 'GrandChild' element is invalid - The value 'ZZZ' is invalid according to its datatype 'GCType' - The Enumeration constraint failed.
(3)The 'GrandChild' element is invalid - The value 'ZZZ' is invalid according to its datatype 'GCType' - The Enumeration constraint failed.
(4)doc1 did not validate
(5)Invalid Element /Root
(6)Invalid Element /Root/Child
(7)Invalid Element /Root/Child/GrandChild
(8)Invalid Element /Root/Child/GrandChild
Я хотел, чтобы строка (7) ссылалась наErrorMessage в строке (2).
У меня есть XML-документ, по которому я выполняю проверку XSD, как показано в этой статье, и я хотел проанализировать ValidationEventArgs.Message в более удобное для пользователя сообщение для сложных типов данных.Я хотел бы сделать это в методе DumpInvalidNodes (), потому что у меня есть доступ к недопустимому узлу и я могу получить от узла другую информацию (например, идентификатор), которую пользователь может использовать для поиска и исправления проблемы проверки.