我对 Microsoft 的.Net 框架 4.0的Extenstions.GetSchemaInfo 方法 (XElement)的 MSDN 文档有疑问。
我想知道是否有办法从内部
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) 行引用了第 (2) 行中的 ErrorMessage。
我有一个 XML 文档,我正在针对该文档运行 XSD 验证,如本文所示,我想将 ValidationEventArgs.Message 解析为对复杂数据类型更用户友好的消息。我想在 DumpInvalidNodes() 方法中执行此操作,因为我可以访问无效节点,并且可以从节点获取其他信息(如 ID),用户可以使用这些信息来查找和修复验证问题。