C# System.Xml集合
在向大家詳細(xì)介紹C#文件中使用XML之前,首先讓大家了解下C# System.Xml集合,然后全面介紹C#文件中使用XML。
要在C#文件中使用XML,就必須引用一個(gè)特定的名稱空間。 .Net平臺(tái)中的一個(gè)名稱空間是作為一個(gè)程序組件的組織系統(tǒng)使用的,它對(duì)于解決命名沖突很重要,這一點(diǎn)很象 XML中的 名稱空間。這個(gè)基于 XML的菜單系統(tǒng)是用位于C# System.Xml集合中的System.Xml名稱空間創(chuàng)建的。.Net SDK 是這樣定義集合的:一個(gè)集合就是一個(gè)類型和資源的匯集信息,這些類和資源一起使用,形成一個(gè)功能的邏輯單元,即一個(gè)“邏輯”dll。
一個(gè)集合需要許多物理文件,如界面、類、資源文件等等,并且創(chuàng)建了關(guān)于文件如何一起工作的元數(shù)據(jù)。集合中還可能包含版本及安全信息。集合有許多好處,其中之一就是可以在ASP.NET應(yīng)用程序中使用,而無(wú)須用regsvr32.exe向注冊(cè)文件中增加一個(gè)類識(shí)別號(hào)(CLSID)。這樣以來(lái),集合的升級(jí)操作與將適當(dāng)?shù)募蠌?fù)制到一個(gè)ASP.NET 應(yīng)用程序的bin 目錄中一樣簡(jiǎn)單?,F(xiàn)在我們就來(lái)仔細(xì)看一看那些建立在System.Xml名稱空間和集合中的類。
如果你以前使用過(guò)Microsoft的 MSXML3分解器,就會(huì)發(fā)現(xiàn)使用C# System.Xml集合中的類相當(dāng)簡(jiǎn)單。這里的菜單應(yīng)用程序只使用了這些主要集合類中的一部分:XmlNode、 XmlDocument、 XmlNodeList、 XmlNamedNodeMap、 DocumentNavigator、 XmlTextReader和 XmlTextWriter。
XmlDocument、 XmlNodeList和XmlNode類用來(lái)創(chuàng)建傳遞給客戶端瀏覽器的菜單應(yīng)用程序的結(jié)構(gòu)。用XmlDocument類以一種安全線程(thread-safe)的方式從服務(wù)器上裝載和分解本地或遠(yuǎn)程XML 文檔。建立在一個(gè)字符串中的 XML標(biāo)記也可以被裝載或分解,從而在一個(gè)文檔中創(chuàng)建、移動(dòng)節(jié)點(diǎn)或取消節(jié)點(diǎn)的移動(dòng)。XmlNodeList 類可以使我們列舉一個(gè)節(jié)點(diǎn)的集合來(lái)訪問(wèn)一個(gè)特定屬性,如名稱、值或名稱空間。最后,XmlNode類可以用來(lái)在XML文檔中向一個(gè)用于檢驗(yàn)的XmlNode 對(duì)象分配一個(gè)特定節(jié)點(diǎn)。
XmlNamedNodeMap類用來(lái)列舉建立在一個(gè)元素類型選擇中的屬性集合。 DocumentNavigator、 XmlTextReader和XmlTextWriter類提供與XML一起使用所需要的額外功能。要特別說(shuō)明的是,DocumentNavigator 可以用來(lái)執(zhí)行XPath查詢,它被包含在XSLT轉(zhuǎn)換中。XmlTextReader類提供對(duì)XML節(jié)點(diǎn)的只向前(forward-only)、無(wú)緩存的訪問(wèn),從而使XML節(jié)點(diǎn)對(duì)大型XML文檔也同樣生效。XmlTextWriter類提供一個(gè)快速、只向前的指針模型,實(shí)現(xiàn)將 XML 內(nèi)容寫到一個(gè)流或一個(gè)文件中的目的。
在菜單應(yīng)用程序中使用的XML 文檔相對(duì)來(lái)說(shuō)是較小的,因此我們可以在服務(wù)器端使用文檔對(duì)象模式(DOM)來(lái)存取XML文檔中的不同節(jié)點(diǎn)。當(dāng)分解大型 XML文檔時(shí),就需要使用XmlTextReader 類所含有的只向前模型。
【編輯推薦】