2013-04-05 47 views
0

我已经使用服务提供者提供的WSDL和几个XSD文件将公共SOAP Web服务写入客户端。我想找到一种简单的方法来根据XSD文件验证用户数据,所以我使用了MSDN的标准示例,使用XmlSchemaSet作为XSD文件,XmlReader和验证例程来捕获错误消息。 (代码位于http://msdn.microsoft.com/en-us/library/as3tta56.aspx)它适用于某些数据元素,但其他数据元素在无效时不会抛出错误。如果我包含“ValidationFlags = ValidationFlags或XmlSchemaValidationFlags.ReportValidationWarnings”,我会收到很多警告,例如“无法找到元素'MyRequest'的模式信息”,“找不到属性'TheDate'的模式信息等等,但是我可以在VS2010 IDE中打开XSD文件,其XML Schema Explorer显示这些元素和属性。.NET 4.0中的XSD数据验证是否可靠?

所以我的主要问题是,熟悉以这种方式在VS2010中验证XML数据的任何人是否对XmlReader验证可以处理的XSD文件的复杂性有限制?目标名称空间的前缀是否可以混淆XmlReader?在模式中定义了数千种复杂类型,分布在7个XSD文件中,这就是为什么我希望自动处理这个问题,而不是为每个用户输入字段写一个验证例程。

在此先感谢。

回答

0

.NET验证可能并不完美,但它在业内名列前茅。他们肯定会遇到的一个问题是模式加载器(我们使用我们自己的),它有时会很容易被愚弄(我会说)。除此之外,我不知道有任何其他限制,按照您所描述的方式。我们经常使用.NET XmlSchemaSet来加载和验证遍布于文件,各种名称空间组合以及数千个元素,类型等的数百个的XSD。

+0

感谢您的回复。我将深入研究XSD文件,试图找到哪些元素被忽略的模式。经过一番研究后,我认为我发现可选元素被忽略,但事实证明它在所有可选类型中看起来并不一致。我必须在星期一继续。 – user2176753 2013-04-06 07:21:39