Web服務中的異常處理

既然我們已經瞭解了AddCategories方法,現在就讓我們來看看AddCategories方法所用到的助手方法。首先,我們看看ValidateXml方法。像前面所提到的那樣,該方法負責確保被添加的'CategoriesXML數據遵從Categories.xsd中所預先定義好的XML模式。

Web服務中的異常處理

privateboolValidateXml(stringxml)

boolvalidXml=false;

//LoadtheXMLdataintomemory

XmlValidatingReadervalReader=new

XmlValidatingReader(xml,XmlNodeType.Document,null);

valReader.Schemas.Add(null,Server.MapPath(""));

dationType=ma;

dationEventHandler+=new

ValidationEventHandler(ValidationHandler);

//LoopthroughtheXMLfile

while(())

if(th>0)

validXml=false;

else

validXml=true;

e();

returnvalidXml;

以上代碼首先把被添加的XML數據傳遞給構造函數,創建一個XmlValidatingReader類實例。然後,把添加到XmlValidatingReader對象的Schemas集合中。接着,設置ValidationType爲ma,表明我們是在根據XML模式來驗證XML數據。當你在使用XmlValidatingReader類驗證XML數據時,你必須創建一個事件處理對象,並把它與ValidationEventHandler事件相關聯。一旦做完這些後,校驗錯誤和警告就通過這個回調事件處理對象被報告出來。ValidationEventHandler具有一個ValidationEventArgs類型的參數。ValidationEventArgs類提供兩個重要屬性,Message和Serverity。這兩個屬性提供更多的有關於校驗錯誤的信息。

在這種情況下,我們把ValidationEventHandler事件與ValidationHandler方法相關聯。在這個方法中,我們附加錯誤信息到StringBuilder對象中,而該StringBuilder對象定義在模塊中。如果沒有任何校驗錯誤,那麼StringBuilder對象的Length屬性將返回0。我們就是使用這個來檢查XML模式校驗是否失敗。