我已经使用服务提供者提供的WSDL和几个XSD文件编写了一个公共SOAP web服务的客户机。我希望找到一种简单的方法来根据XSD文件验证用户数据,因此我使用了MSDN中的标准示例,使用XSD文件的XmlSchemaSet、XmlReader和验证例程来捕获错误消息。(代码可从http://msdn.microsoft.com/en-us/library/as3tta56.aspx获得)它适用于某些数据元素,但其他数据元素无效时不会抛出错误。如果我包括"ValidationFlags = ValidationFlags或XmlSchemaValidationFlags。ReportValidationWarnings",我就会得到很多警告,例如:"找不到元素'MyRequest'的模式信息","找不到属性'TheDate'的模式信息",等等。但是我可以在VS2010 IDE中打开XSD文件,它的XML Schema Explorer显示了这些元素和属性。
所以我的主要问题谁是熟悉验证XML数据在VS2010以这种方式是,是否有限制的XSD文件的复杂性,XmlReader验证可以处理?目标名称空间的前缀是否会混淆XmlReader?模式中定义了数千种复杂类型,分布在7个XSD文件中,这就是为什么我希望自动处理这些类型,而不是为每个用户输入字段编写验证例程的原因。
. net验证可能并不完美,但它是业内最好的。他们肯定存在的一个问题是模式加载器(我们使用我们自己的),它有时太容易被愚弄(我想说)。除了以上,我不知道你所描述的其他限制。我们通常使用. net XmlSchemaSet来加载和验证分布在数百个文件中的xsd,这些文件包含各种名称空间组合,以及数千个元素、类型等。