在.NET Framework中輕鬆處理XML資料(3-2)

來源:互聯網
上載者:User
??ValidationType屬性設定驗證的類型,它可以是:DTD, XSD, XDR或者none。假如沒有指定驗證的類型(用ValidationType.Auto選項),瀏覽器將主動的根據文檔用最合適的驗證類型。在驗證過程中呈現任何錯誤,都會觸發ValidationEventHandler事件。假如未供給事件ValidationEventHandler事件處理常式,則拋出一個XML異常。定義ValidationEventHandler事件處理常式是用於捕捉任何在XML源檔案中存在錯誤而引發XML異常的一種方法。要留心的是瀏覽器的原理是檢查一個文檔是否是格局良好的,以及檢查文檔是否與架構吻合。假如帶驗證的瀏覽器發明一個有嚴重的格局錯誤的XML文檔,只會觸發XmlException異常,它不會觸發其它的事件。

??驗證產生在使用者用Read方法向前移動指標時,一旦節點被分析和讀取,它獲得傳送過來的處理驗證的內部的對象。驗證把持是基於節點類型及被請求的驗證類型。它確認節點所有的屬性和節點包含的子節點是否符合驗證條件。

??驗證對象在內部調用兩個不同作風的對象:DTD分析器和架構天生器(schema builder)。DTD分析器處應當前節點的內容和不符合DTD的子樹。架構天生器根據XDR或者XSD架構對當前的節點構建一個SOM(schema object model)。架構天生器類實際上是所有指定為XDR和XSD架構天生器的基類。為什麼呢,固然XDR和XSD架構的很多雷同的方法被加工處理過,但是它們在履行時的效能沒有差別。

??假如節點有子節點,用另一個臨時的瀏覽器收集子節點資訊,因此節點的架構資訊能被完整地驗證。你可以看圖五:



??留心,儘管XmlValidatingReader類的結構函數可以接收一個XmlReader類作為其瀏覽器,但是該瀏覽器只能是XmlTextReader類的一個執行個體或者是它的一個衍生類別的執行個體。這意味著你不能用其它從XmlReader派生的類(例如一個自訂的XML瀏覽器)。在XmlValidatingReader類的內部,它假設瀏覽器是一個子XmlTextReader對象及把傳進的瀏覽器顯式的轉換成XmlTextReader類。假如你用XmlNodeReader或者自訂的瀏覽器器,程式在編譯時間會出錯,運行時拋出一個異常。


??節點瀏覽器

??XML瀏覽器供給一種增量式的方法(一個一個節點的讀)來處理文檔的內容。到目前為止,我們假設源檔案是一個基於硬碟的流或者是一個字串流,然而,我們不能保證在實際中會供給一個源檔案的XMLDOM對象給我們。在這種情況下,我們需要一個帶有特別的讀方法的特別的類。對這種情況,.NET Framework供給了XmlNodeReader類。

??就像XmlTextReader拜訪指定XML流中所有節點一樣,XmlNodeReader類拜訪XMLDOM子樹的所有節點。XMLDOM類(在.NET Framework中的XmlDocument類)支撐基於Xpath的方法,例如SelectNodes方法和SelectSingleNode方法。這些方法的作用是把匹配的節點放在記憶體中。假如你需要處理子樹中的所有節點,節點瀏覽器比用增量式方法處理節點的瀏覽用具有更高的效率:

// xmldomNode is the XML DOM node

XmlNodeReader nodeReader = new XmlNodeReader(xmldomNode);

while (nodeReader.Read())

{

// Do something here

}

??當你要在設定檔(例如web.cofig檔案)中引用自訂的資料時,先把這些資料填充到XMLDOM樹中,然後用XmlNodeReader類與XMLDOM類聯合處理這些資料。這也是高效的。


以上就是在.NET Framework中輕鬆處理XML資料(3-2) 的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.