2013-04-05 51 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