ValidationType屬性設置驗證的類型,它可以是:DTD, XSD, XDR或者none。如果沒有指定驗證的類型(用ValidationType.Auto選項),閱讀器將自動的根據(jù)文檔用最適合的驗證類型。在驗證過程中出現(xiàn)任何錯誤,都會觸發(fā)ValidationEventHandler事件。如果未提供事件ValidationEventHandler事件處理程序,則拋出一個XML異常。定義ValidationEventHandler事件處理程序是用于捕捉任何在XML源文件中存在錯誤而引發(fā)XML異常的一種方法。要注意的是閱讀器的原理是檢查一個文檔是否是格式良好的,以及檢查文檔是否與架構吻合。如果帶驗證的閱讀器發(fā)現(xiàn)一個有嚴重的格式錯誤的XML文檔,只會觸發(fā)XmlException異常,它不會觸發(fā)其它的事件。 注意,盡管XmlValidatingReader類的構造函數(shù)可以接受一個XmlReader類作為其閱讀器,但是該閱讀器只能是XmlTextReader類的一個實例或者是它的一個派生類的實例。這意味著你不能用其它從XmlReader派生的類(例如一個自定義的XML閱讀器)。在XmlValidatingReader類的內部,它假設閱讀器是一個子XmlTextReader對象及把傳入的閱讀器顯式的轉換成XmlTextReader類。如果你用XmlNodeReader或者自定義的閱讀器器,程序在編譯時會出錯,運行時拋出一個異常。 節(jié)點閱讀器 XML閱讀器提供一種增量式的方法(一個一個節(jié)點的讀)來處理文檔的內容。到目前為止,我們假設源文件是一個基于硬盤的流或者是一個字符串流,然而,我們不能保證在實際中會提供一個源文件的XMLDOM對象給我們。在這種情況下,我們需要一個帶有特別的讀方法的特別的類。對這種情況,.NET Framework提供了XmlNodeReader類。 就像XmlTextReader訪問指定XML流中所有節(jié)點一樣,XmlNodeReader類訪問XMLDOM子樹的所有節(jié)點。XMLDOM類(在.NET Framework中的XmlDocument類)支持基于Xpath的方法,例如SelectNodes方法和SelectSingleNode方法。這些方法的作用是把匹配的節(jié)點放在內存中。如果你需要處理子樹中的所有節(jié)點,節(jié)點閱讀器比用增量式方法處理節(jié)點的閱讀器具有更高的效率: // xmldomNode is the XML DOM node XmlNodeReader nodeReader = new XmlNodeReader(xmldomNode); while (nodeReader.Read()) { // Do something here } 當你要在配置文件(例如web.cofig文件)中引用自定義的數(shù)據(jù)時,先把這些數(shù)據(jù)填充到XMLDOM樹中,然后用XmlNodeReader類與XMLDOM類結合處理這些數(shù)據(jù)。這也是高效的。 |
溫馨提示:喜歡本站的話,請收藏一下本站!