针对故障定位XSD的C#数据验证
我使用xsd.exe从xsd模式生成了类。我无法控制模式。使用XmlSerlializer进行读取、写入以及序列化数据的验证工作正常。 我想根据模式中的规则,对包含用户输入的数据执行在线错误检查。同样,我对序列化和验证没有问题,但是我发现没有简单的方法可以跟踪故障的位置,故障发生在哪个类的哪个实例中。 我发现了一条评论,其中提到不存在XmlValidatingWriter的原因是这些类应该已经确保了模式兼容性,但是对于xsd.exe生成的类来说,情况并非如此。(结构和类型良好,但不包括唯一字段、图案匹配等) 有一个关于的页面,但对我来说这似乎是超级手册,完全忽略了我所有的类都是xml可序列化的这一事实 我发现了类似的问题,但似乎没有人有这个特定的目标,我也找不到一个答案来引导我找到解决方案。我可以断定,由于某些原因,这是不可能的——就像我现在看到的那样——但我想了解原因,并了解我的整个架构哪里出了问题针对故障定位XSD的C#数据验证,c#,xml,validation,xsd,xmlserializer,C#,Xml,Validation,Xsd,Xmlserializer,我使用xsd.exe从xsd模式生成了类。我无法控制模式。使用XmlSerlializer进行读取、写入以及序列化数据的验证工作正常。 我想根据模式中的规则,对包含用户输入的数据执行在线错误检查。同样,我对序列化和验证没有问题,但是我发现没有简单的方法可以跟踪故障的位置,故障发生在哪个类的哪个实例中。 我发现了一条评论,其中提到不存在XmlValidatingWriter的原因是这些类应该已经确保了模式兼容性,但是对于xsd.exe生成的类来说,情况并非如此。(结构和类型良好,但不包括唯一字段、
谢谢。好的,这就是我最后要做的。我并不为此感到骄傲
可能效率很低,但就我处理的数据大小而言,这没问题。大多数
XmlReader
实例都实现了这一点<代码>元素。根据您验证XML的方式,您可能可以使用它来提取或沿线的故障位置。您能否将您的问题分享给我们,以展示如何验证XML?另外,XmlSchemaException
包含行和位置信息。它就在那里,所以您应该可以开始了。另请参阅,以获取反序列化期间要验证的通用方法。验证失败将传递一个包含XmlSchemaException
@dbc的消息,谢谢。我可以这样做,但我对序列化数据(行/位置)中的错误位置并不感兴趣。在序列化之前,我关心它在对象层次结构中的位置。我想知道在序列化过程中是否有一种获取LineInfo的方法,XmlWriter何时将我的一个对象写入到它结束的行中。通过这种方式,至少我可以根据XmlSchemaException或事件处理程序中的行追踪到确切的对象。顺便说一句,我使用的是XDocument.Validate,然后再将其序列化。但我认为这无关紧要。