.Net平臺(tái)XML編程基礎(chǔ)_第1頁(yè)
.Net平臺(tái)XML編程基礎(chǔ)_第2頁(yè)
.Net平臺(tái)XML編程基礎(chǔ)_第3頁(yè)
.Net平臺(tái)XML編程基礎(chǔ)_第4頁(yè)
.Net平臺(tái)XML編程基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

五..NETXml

下面介紹.NET平臺(tái)的XML編程根底。

1.NET

.NET是微軟公司為了與Sun公司的Java/J2EE/EJB競(jìng)爭(zhēng),于2000年6月22日提出來(lái)的一種跨語(yǔ)言、跨平臺(tái)、面向組件編程的新計(jì)算技術(shù),是微軟COM組件技術(shù)的一種開(kāi)展。.NET適用于客戶(hù)端程序、Web效勞〔WebServices〕和因特網(wǎng)分布式應(yīng)用,是生成、部署和運(yùn)行托管應(yīng)用程序和XMLWeb效勞的一種多語(yǔ)言環(huán)境和可視化開(kāi)發(fā)工具。

微軟的.NET技術(shù),由〔包含公共語(yǔ)言運(yùn)行環(huán)境CLR和框架類(lèi)庫(kù)FCL的〕.NET框架〔.NETFramework〕和〔托管應(yīng)用程序開(kāi)發(fā)平臺(tái)〕VisualStudio這兩大局部組成。

PC硬件

Win32/64……

通用語(yǔ)言運(yùn)行時(shí)CLR(CLI)

MSMQ〔信息隊(duì)列〕

COM+〔事務(wù)、分區(qū)、對(duì)象池〕

ADO

IIS

VisualStudio

基類(lèi)庫(kù)BCL

ADO.NET與XML

Web效勞

用戶(hù)界面

ASP.NET

微軟中間語(yǔ)言MSIL(CIL)

.NET框架

.NET

C#

VB

C++

JScript

Perl

J#

Python

……

公共語(yǔ)言標(biāo)準(zhǔn)CLS(CTS)

框架類(lèi)庫(kù)FCL

虛擬執(zhí)行系統(tǒng)VES

.NET技術(shù)

1〕.NET框架

.NET框架〔.NETFramework〕是微軟為Windows平臺(tái)設(shè)計(jì)的一種托管編程模型。

這里的托管〔managed〕是指,程序的代碼〔元數(shù)據(jù)、MSIL〕,特別是程序中的數(shù)據(jù)和對(duì)象所對(duì)應(yīng)內(nèi)存的分配、指向和釋放,全都由.NET的運(yùn)行環(huán)境CLR來(lái)代為管理。托管是所有.NET程序的特點(diǎn)。托管代碼具有許多優(yōu)點(diǎn),例如:跨語(yǔ)言集成、跨語(yǔ)言異常處理、增強(qiáng)的平安性、版本控制和部署支持、簡(jiǎn)化的組件交互模型、調(diào)試和分析效勞等。

.NET框架的版本有:

.NETFramework1.0:2002年1月5日推出,隨VisualStudio.NET〔2002〕于2002年2月13日發(fā)布。為.NET框架的首個(gè)版本,含.NET框架的根本功能,主要由CLR、FCL和ASP.NET三局部組成。

.NETFramework1.1:2003年4月1日推出,隨VisualStudio.NET2003于2003年5月20日發(fā)布。為1.0的升級(jí)版,增加了對(duì)內(nèi)置ASP.NET控件和內(nèi)置ODBC與Oracle數(shù)據(jù)庫(kù)的支持、改變了平安性〔允許以半可信方式執(zhí)行視窗窗體程序集[WindowsFormsassemblies]、允許在ASP.NET應(yīng)用程序中的代碼訪問(wèn)平安性〕、增加了針對(duì)小型設(shè)備的緊湊版框架〔.NETCompactFramework〕、增加了對(duì)IPv6的支持、還改變了許多API。

.NETFramework2.0:2005年11月7日推出,隨VisualStudio2005一起發(fā)布。在2.0版中,新增了一個(gè)針對(duì)本地應(yīng)用程序的可更精細(xì)地控制多線程/內(nèi)存分配和程序集裝入的宿主〔hosting〕API、將對(duì)泛型〔Generics〕的語(yǔ)言支持被直接植入CLR中、提供了對(duì)AMD的x64和Intel的IA64等64位硬件平臺(tái)的全面支持、許多新增和改進(jìn)的ASP.NETWeb控件以及新的ASP.NET個(gè)性化特征〔如支持主題〔themes〕、外殼〔skins〕和網(wǎng)件〔webparts〕等〕、增加了許多ADO.NET的新功能〔包括對(duì)用戶(hù)定義類(lèi)型(UDT)、異步數(shù)據(jù)庫(kù)操作、XML數(shù)據(jù)類(lèi)型、大值類(lèi)型和快照隔離的支持,以及對(duì)允許應(yīng)用程序通過(guò)SQLServer2005支持多活動(dòng)結(jié)果集(MARS)的新屬性的支持等〕、增加了與聰明個(gè)人對(duì)象技術(shù)〔SmartPersonalObjectsTechnology〕有關(guān)的微型版框架〔.NETMicroFramework〕。

.NETFramework3.0:2006年11月6日推出,隨WindowsVista一起發(fā)布。3.0在2.0的根底上,增加了如下4個(gè)主要的新模塊:

WPF〔WindowsPresentationFoundation,視窗表示根底〕——一種基于XML和〔使用3D計(jì)算機(jī)圖形硬件和Direct3D技術(shù)的〕矢量圖形的新用戶(hù)界面子系統(tǒng)和API;

WCF〔WindowsCommunicationFoundation,視窗通信根底〕——一種構(gòu)建面向效勞應(yīng)用程序的統(tǒng)一編程模型,允許像Web效勞一樣,在程序之間進(jìn)行本地或遠(yuǎn)程的交互操作;

WF〔WindowsWorkflowFoundation,視窗工作流根底〕——允許使用工作流來(lái)創(chuàng)立任務(wù)自動(dòng)化〔taskautomation〕和集成事務(wù)處理〔integratedtransactions〕;

WCS〔WindowsCardSpace,視窗卡空間〕——一種軟件組件,可平安存儲(chǔ)個(gè)人數(shù)字身份〔person'sdigitalidentity〕,并為在特定事務(wù)〔如登錄網(wǎng)站〕中選擇身份提供統(tǒng)一的界面。

.NETFramework3.5:2007年11月16日隨VisualStudio2023發(fā)布。對(duì)3.0版的主要改變有:

C#3.0和VB.NET9.0編譯器中的新特性;

增加對(duì)表達(dá)式樹(shù)和λ方法的支持;

擴(kuò)展方法;

表達(dá)式樹(shù)在運(yùn)行時(shí)表示高級(jí)源代碼;

具有靜態(tài)類(lèi)型引用的匿名類(lèi)型;

LINQ〔LanguageIntegratedQuery,語(yǔ)言集成查詢(xún)〕;

支持ADO.NET分頁(yè);

ADO.NET同步API;

異步網(wǎng)絡(luò)I/OAPI;

P2P網(wǎng)絡(luò)棧,包含托管PNRP〔PeerNameResolutionProtocol,端名解析協(xié)議〕解析器;

WMI〔WindowsManagementInstrumentation,視窗管理設(shè)備〕和活動(dòng)目錄API的托管封裝;

增強(qiáng)的WCF和WF運(yùn)行時(shí)〔庫(kù)〕,允許WCF使用POX和JSON數(shù)據(jù),還將WF工作流揭示為WCF效勞;

支持HTTP管線和syndicationfeeds;

包含ASP.NETAJAX;

新命名空間System.CodeDom。

.NET框架棧

.NET框架主要由運(yùn)行環(huán)境〔庫(kù)/時(shí)〕CLR和類(lèi)庫(kù)FCL兩個(gè)局部組成。參見(jiàn)以下列圖示。

托管應(yīng)用程序

操作系統(tǒng)

硬件

CLR

IIS

非托管應(yīng)用程序

ASP.NET

自定義對(duì)象庫(kù)

托管Web

應(yīng)用程序

FCL

.NET框架環(huán)境

PC機(jī)硬件

操作系統(tǒng)〔Win32/64/…〕

公共語(yǔ)言運(yùn)行時(shí)〔CLR〕

托管應(yīng)用程序

ASP.NET

Windows窗體

XMLWeb效勞

企業(yè)效勞

ADO.NET

其他

.NET框架類(lèi)庫(kù)〔FCL〕

.NET框架

WPF

WCF

WF

WCS

LINQ

實(shí)體框架

.NET框架3.5的構(gòu)成

計(jì)算機(jī)硬件

操作系統(tǒng)〔Winows/Unix/Linux/MacOS等〕

Java虛擬機(jī)〔VM〕

應(yīng)用程序

JSP

Swing

JAX-WS

EJB

JDBC

其他

標(biāo)準(zhǔn)Java包

Java環(huán)境

Java環(huán)境的構(gòu)成

可以將.NET框架與Java環(huán)境加以對(duì)照和比較,二者有著許多類(lèi)似的地方:CLR似VM而FCL似標(biāo)準(zhǔn)Java包。只是Java早已廣泛應(yīng)用于各種計(jì)算機(jī)平臺(tái),而.NET目前還主要局限于Windows平臺(tái);不過(guò)Java環(huán)境只能使用Java語(yǔ)言,而.NET那么可以使用C#、VB、VC、J#、JScript等各種編程語(yǔ)言與工具,真正做到了跨語(yǔ)言。

CLR〔CommonLanguageRuntime,調(diào)用語(yǔ)言運(yùn)行庫(kù)/公共語(yǔ)言運(yùn)行時(shí)〕——該運(yùn)行時(shí)/庫(kù)在組件的運(yùn)行時(shí)和開(kāi)發(fā)時(shí)的操作中都起著很大作用:

在組件運(yùn)行時(shí),運(yùn)行庫(kù)除了負(fù)責(zé)滿(mǎn)足此組件在其他組件上可能具有的依賴(lài)項(xiàng)外,還負(fù)責(zé)管理內(nèi)存分配、啟動(dòng)和停止線程和進(jìn)程,以及強(qiáng)制執(zhí)行平安策略。

在開(kāi)發(fā)時(shí),運(yùn)行庫(kù)的作用稍有變化;由于做了大量的自動(dòng)處理工作〔如內(nèi)存管理〕,運(yùn)行庫(kù)使開(kāi)發(fā)人員的操作非常簡(jiǎn)單,尤其是與今天的COM相比。特別是反射等功能顯著減少了開(kāi)發(fā)人員為將業(yè)務(wù)邏輯轉(zhuǎn)變?yōu)榭芍赜媒M件而必須編寫(xiě)的代碼量。

FCL〔FrameworkClassLibrary,框架類(lèi)庫(kù)〕——該框架為開(kāi)發(fā)人員定義并提供了統(tǒng)一的、面向?qū)ο蟮?、分層的和可擴(kuò)展的類(lèi)庫(kù)集,其中最主要的是供應(yīng)用程序編寫(xiě)者使用的.NET基類(lèi)庫(kù)〔BCL,BaseClassLibrary〕——FCL中的System子命名空間。通過(guò)創(chuàng)立跨所有編程語(yǔ)言的公共API集,公共語(yǔ)言運(yùn)行庫(kù)使得跨語(yǔ)言繼承、錯(cuò)誤處理和調(diào)試成為可能。從JScript、VisualBasic到C++、J#、C#的所有編程語(yǔ)言〔通過(guò)托管擴(kuò)展〕具有對(duì)框架的相似訪問(wèn),開(kāi)發(fā)人員可以自由選擇它們要使用的語(yǔ)言。

CLR

類(lèi)加載器

JIT編譯器

代碼管理器

垃圾回收器

平安引擎

調(diào)試引擎

類(lèi)型檢查器

異常管理器

線程支持

COM編組器

FCL支持

在第一次被運(yùn)行時(shí)

語(yǔ)言編譯器

源代碼

MSIL和元數(shù)據(jù)

JIT編譯器

本地代碼

編譯

運(yùn)行

CLR的構(gòu)成 托管代碼的編譯與運(yùn)行

各種語(yǔ)言的托管程序源代碼,都被對(duì)應(yīng)的語(yǔ)言編譯器翻譯為統(tǒng)一的MSIL〔MicroSoftIntermediateLanguage,微軟中間語(yǔ)言〕。MSIL是一組可以有效地轉(zhuǎn)換為本機(jī)代碼〔nativecode〕且獨(dú)立于CPU的指令,它包括用于加載、存儲(chǔ)和初始化對(duì)象以及調(diào)用對(duì)象方法的指令,還包括用于算術(shù)和邏輯運(yùn)算、控制流、直接內(nèi)存訪問(wèn)、異常處理和其他操作的指令。MSIL是.NET跨語(yǔ)言跨平臺(tái)的根底。

托管代碼〔managedcode〕被編譯成MSIL后,就完全失去了它所使用的源語(yǔ)言特征。因此,各種語(yǔ)言〔如C#、VB、VC、J#和JScript等〕所編寫(xiě)的托管程序,在.NET框架下都具有幾乎一樣的操作功能和執(zhí)行效率。這得益于MSIL所遵循的CTS〔CommonTypeSystem,公共類(lèi)型系統(tǒng)〕及其子集與用法常規(guī)CLS〔CommonLanguageSpecification,公共語(yǔ)言標(biāo)準(zhǔn)〕,這些將在下面介紹。

當(dāng)語(yǔ)言編譯器產(chǎn)生MSIL時(shí),它也產(chǎn)生元數(shù)據(jù)〔metadata〕。元數(shù)據(jù)描述代碼中的類(lèi)型,包括每種類(lèi)型的定義、成員的簽名、代碼引用的成員和運(yùn)行庫(kù)在執(zhí)行時(shí)使用的其他數(shù)據(jù)。MSIL〔或本機(jī)代碼〕和元數(shù)據(jù)被封裝在一個(gè)PE〔PortableExecutable,可移植可執(zhí)行)文件中,文件中的元數(shù)據(jù)以及MSIL的存在,使代碼能夠描述自身。這意味著不再需要類(lèi)型庫(kù)或IDL〔InterfaceDefinitionLanguage,接口定義語(yǔ)言〕,CLR在執(zhí)行過(guò)程中可從該文件中查找并提取所需的元數(shù)據(jù)。元數(shù)據(jù)對(duì)〔作為組件的〕托管程序的裝載和運(yùn)行,起著十分重要的作用。

為了使代碼可最終可在計(jì)算機(jī)上運(yùn)行,必須先將MSIL轉(zhuǎn)換為特定于CPU的代碼,這通常是通過(guò)JIT〔Just-In-Time,即時(shí))編譯器來(lái)完成的。所謂即時(shí)編譯器,是指CLR只是在托管程序被第一次實(shí)際執(zhí)行時(shí),才將其編譯本錢(qián)地代碼〔參見(jiàn)圖8-6〕。如果一個(gè)托管程序在安裝后從未被執(zhí)行過(guò),那么不會(huì)被CLR翻譯本錢(qián)地代碼;如果一個(gè)托管程序在安裝后被屢次執(zhí)行,也只需要被翻譯〔本錢(qián)地代碼〕一次即可。JIT編譯器所產(chǎn)生的本地代碼,顯然比每次運(yùn)行都需要靠VM解釋執(zhí)行的Java字節(jié)碼更快速和高效。而且它比其他非托管語(yǔ)言編譯器所直接產(chǎn)生的本地可執(zhí)行代碼也要快速和高效,因?yàn)樗梢愿鶕?jù)用戶(hù)當(dāng)前計(jì)算機(jī)平臺(tái)中CPU的性能,來(lái)動(dòng)態(tài)產(chǎn)生優(yōu)化的本地代碼。

元語(yǔ)言使得托管程序是自描述的,MSIL使得托管程序可以跨語(yǔ)言,而JIT編譯器那么使得托管程序可以跨平臺(tái)。托管代碼一般被封裝在程序集〔assembly〕內(nèi),它既可是PE可執(zhí)行程序,也可是DLL動(dòng)態(tài)連接庫(kù)。.NET中的托管代碼程序集,可以視為微軟COM組件的一種開(kāi)展。所以.NET本身,也是一種更高級(jí)、更有效的組件技術(shù),它完全徹底地解決了COM在跨語(yǔ)言、跨平臺(tái)、自我描述、平安可靠和版本部署等方面所存在的種種問(wèn)題。

CLR是國(guó)際標(biāo)準(zhǔn)〔ECMA-335和ISO/IEC23271〕CLI〔CommonLanguageInfrastructure,公共語(yǔ)言根底設(shè)施〕在Windows平臺(tái)上的一種具體實(shí)現(xiàn)。而CLI包含CTS〔CommonTypeSystem,公共類(lèi)型系統(tǒng)〕和CIL〔CommonIntermediateLanguage,公共中間語(yǔ)言〕兩個(gè)主要組成局部。前面提到過(guò)的MSIL,也是CIL的一種具體實(shí)現(xiàn)。

2〕VisualStudio.NET開(kāi)發(fā)平臺(tái)

VisualStudio.NET是基于.NET框架軟件的開(kāi)發(fā)平臺(tái),是.NET的主要組成局部。在VS.NET中集成了VisualBasic、C#、J#和VisualC++等編程語(yǔ)言,也支持腳本語(yǔ)言JScript。其中,C#是微軟公司于2000年7月自己創(chuàng)造的一種類(lèi)似于Java的編程語(yǔ)言,VisualC#隨VS.NET1.0一起正式推出;VisualJ#那么是隨VS.NET2003推出的一種Java的變種,是原來(lái)VisualJ++的開(kāi)展;JScript那么是JavaScript的微軟變種。

各種.NET編程語(yǔ)言中,C#與.NET結(jié)合得最緊密,是.NET的首選語(yǔ)言;微軟一貫重視〔比爾·蓋茨的看家本領(lǐng)Basic的開(kāi)展〕VisualBasic,在.NET中也不例外,所以在MSDN幫助文檔中,往往只有C#和VB的例子,而沒(méi)有VC的。

2002年2月13日微軟公司推出了VisualStudio.NET〔2002〕、2003年5月20日推出了VisualStudio.Net2003、2005年11月7日推出了VisualStudio200、2007年11月16日推出了VisualStudio2023。

VisualStudio2023

集成開(kāi)發(fā)環(huán)境

Web窗體工具

Windows窗體工具

XMLWeb效勞工具

錯(cuò)誤調(diào)試

多語(yǔ)言支持

數(shù)據(jù)訪問(wèn)

設(shè)計(jì)

開(kāi)發(fā)

調(diào)試

部署

訪問(wèn)幫助文檔

VisualStudio2023

VisualStudio2023

工程設(shè)計(jì)

與規(guī)劃

創(chuàng)立

新工程

創(chuàng)立用戶(hù)界面及編寫(xiě)代碼

測(cè)試

與調(diào)試

生成

部署

VisualStudio2023開(kāi)發(fā)流程

微軟公司之所以推出.NET框架,主要是為了與Sun公司的Java平臺(tái)競(jìng)爭(zhēng)。雖然微軟公司號(hào)稱(chēng).NET框架是跨平臺(tái)和跨語(yǔ)言的,但是目前只有Windows平臺(tái)的實(shí)現(xiàn)〔也有人想把.NET移植到Linux上,但至今沒(méi)有完成〕。由于Sun公司收回了微軟公司對(duì)Java語(yǔ)言的使用權(quán),所以.NET框架的多語(yǔ)言環(huán)境中也不包括Java這一世界通用的網(wǎng)絡(luò)編程首選語(yǔ)言,而是以微軟從Java克隆過(guò)來(lái)的C#為主,同時(shí)也強(qiáng)調(diào)微軟自己的VB、J#和JScript,雖然也支持通用的C++,但必須進(jìn)行微軟的托管擴(kuò)展〔MC++或C++/CLI〕??傊?,到目前為止,.NET框架還是一種局限于Windows操作系統(tǒng),且只能使用微軟公司自己的幾種編程語(yǔ)言的一種分布式計(jì)算平臺(tái)。

2.FCL

.NET框架為開(kāi)發(fā)人員定義并提供了統(tǒng)一的、面向?qū)ο蟮?、分層的和可擴(kuò)展的類(lèi)庫(kù)集——FCL〔FrameworkClassLibrary,框架類(lèi)庫(kù)〕,其中主要是System命名空間下的.NET基類(lèi)庫(kù)〔BCL,BaseClassLibrary〕。通過(guò)創(chuàng)立跨所有編程語(yǔ)言的公共API集,公共語(yǔ)言運(yùn)行庫(kù)使得跨語(yǔ)言繼承、錯(cuò)誤處理和調(diào)試成為可能。從JScript、VisualBasic到C++、J#、C#的所有編程語(yǔ)言〔通過(guò)托管擴(kuò)展〕具有對(duì)框架的相似訪問(wèn),開(kāi)發(fā)人員可以自由選擇它們要使用的語(yǔ)言。

.NETFramework類(lèi)庫(kù)是一個(gè)由Microsoft.NETFrameworkSDK中包含的類(lèi)、接口和值類(lèi)型組成的庫(kù)。該庫(kù)提供對(duì)系統(tǒng)功能的訪問(wèn),是建立.NETFramework應(yīng)用程序、組件和控件的根底。該類(lèi)庫(kù)采用命名空間來(lái)組織和使用〔源自ISOC++,似Java中的包〕。

.NETFramework1.0版類(lèi)庫(kù)提供的命名空間共有100個(gè):5個(gè)Microsoft型和95個(gè)System型。.NETFramework1.1版類(lèi)庫(kù)提供的命名空間共有104個(gè)〔比1.0版增加了4個(gè)〕:5個(gè)Microsoft型和99個(gè)System型。1.1版新增的4個(gè)System型命名空間分別為:dbc、、和。

.NETFramework2.0版類(lèi)庫(kù)提供的命名空間共有195個(gè)〔比1.1版增加了91個(gè)〕:1個(gè)默認(rèn)命名空間、1個(gè)Accessibility命名空間、1個(gè)IEHost.Execute命名空間、32個(gè)Microsoft型命名空間、160個(gè)System型命名空間。

.NETFramework3.0版類(lèi)庫(kù)提供的命名空間共有304個(gè)〔比2.0版增加了109個(gè)〕〔參見(jiàn)圖8-7〕:1個(gè)默認(rèn)命名空間、1個(gè)Accessibility命名空間、1個(gè)IEHost.Execute命名空間、51個(gè)Microsoft型命名空間〔參見(jiàn)以下列圖〕、1個(gè)Microsoft_VsaVb命名空間、1個(gè)RegCode命名空間、247個(gè)System型命名空間〔參見(jiàn)圖8-8〕、1個(gè)UIAutomationClientsideProviders命名空間。

.NETFramework3.5版類(lèi)庫(kù)提供的命名空間共有334個(gè)〔比3.0版增加了30個(gè)〕:Accessibility、IEHost、Microsoft_VsaVb、RegCode、UIAutomationClientsideProviders型命名空間各1個(gè),Microsoft型命名空間58個(gè)、System型命名空間271個(gè)。

System命名空間下的.NET類(lèi)庫(kù)又被稱(chēng)為BCL〔BaseClassLibrary,基類(lèi)庫(kù)〕。

BCL

271個(gè)

FCL〔334個(gè)〕

〔默認(rèn)〕

Accessibility

IEHost

Microsoft

RegCode

System

UIAutomation

Clientside

Providers

System

.Diagnostics

.SymbolStore

Execute

Microsoft_VsaVb

WindowsMobile

Aspnet

……

Xml

CodeDom

……

58個(gè)

NET框架3.5中的FCL命名空間

〔綠色/紅色分別為2.0/3.0版新增的一級(jí)子空間,3.5未增加新的一級(jí)子空間〕

默認(rèn)命名空間——ISymWrapper.dll中的默認(rèn)命名空間提供了對(duì)System.Diagnostics.SymbolStore命名空間的內(nèi)部支持。該命名空間提供的類(lèi)允許讀取和向MSIL映射寫(xiě)入調(diào)試符號(hào)信息〔如源行〕。面向.NETFramework的編譯器可以將調(diào)試符號(hào)信息存儲(chǔ)到程序員的數(shù)據(jù)庫(kù)(PDB)文件中。調(diào)試器和代碼探查器工具可以在運(yùn)行時(shí)讀取調(diào)試符號(hào)信息。

Accessibility——是COM可訪問(wèn)〔accessibility,可達(dá)性〕界面的托管封裝的一局部。

IEHost.Execute——含IE遠(yuǎn)程執(zhí)行類(lèi)IEExecRemote。

Microsoft命名空間——用于操作系統(tǒng)和編程語(yǔ)言,不能為普通應(yīng)用程序所利用。它包括58個(gè)子孫空間。圖8-8是它的全部一級(jí)子空間〔字母序〕。

Microsoft

Aspnet

Build

Csharp

JScript

SqlServer

VisualBasic

Vsa

Win32

WindowsCE

VisualC

WindowsMobile

CLRAdmin

IE

Ink

PowerShell

StylusInput

Web

Windows

ManagementConsole

ServiceModel

圖8-8FCL中Microsoft命名空間的一級(jí)子空間

〔綠色/紅色/藍(lán)色分別為2.0/3.0/3.5版新增的一級(jí)子空間〕

BCL命名空間〔類(lèi)〕提供對(duì)數(shù)據(jù)類(lèi)型轉(zhuǎn)換、方法參數(shù)操作、數(shù)學(xué)計(jì)算、遠(yuǎn)程和本地程序調(diào)用、應(yīng)用程序環(huán)境管理、以及對(duì)托管和非托管應(yīng)用程序的監(jiān)管等操作的支持和效勞。主要的BCL命名空間有:

System

CodeDom

Collections

Globalization

Configuration

Data

Deployment

Media

DirectoryServices

Drawing

Diagnostics

EnterpriseServices

ComponentModel

IO

IdentityModel

Management

Messaging

Net

Printing

Reflection

Resources

Runtime

Security

ServiceModel

ServiceProcess

Speech

Text

Threading

Timers

Transactions

Web

Windows

Xml

Workflow

AddIn

Linq

FCL中System命名空間〔BCL〕的一級(jí)子空間

〔綠色/紅色/藍(lán)色分別為2.0/3.0/3.5版新增的一級(jí)子空間〕

System——包含用于定義常用值和引用數(shù)據(jù)類(lèi)型、事件和事件處理程序、接口、屬性和處理異常的根底類(lèi)和基類(lèi)

System.Data——根本上由構(gòu)成ADO.NET結(jié)構(gòu)的類(lèi)組成。ADO.NET結(jié)構(gòu)使您可以生成可用于有效管理多個(gè)數(shù)據(jù)源中的數(shù)據(jù)的組件。在斷開(kāi)連接的方案〔如Internet〕中,ADO.NET提供了一些可以在多層系統(tǒng)中請(qǐng)求、更新和協(xié)調(diào)數(shù)據(jù)的工具。ADO.NET結(jié)構(gòu)也可以在客戶(hù)端應(yīng)用程序〔如Windows窗體〕或ASP.NET創(chuàng)立的HTML頁(yè)中實(shí)現(xiàn)

System.Drawing——提供對(duì)GDI+根本圖形功能的訪問(wèn)。System.Drawing.Drawing2D、System.Drawing.Imaging和System.Drawing.Text命名空間提供了更高級(jí)的功能

System.IO——包含允許對(duì)數(shù)據(jù)流和文件進(jìn)行同步和異步讀寫(xiě)的類(lèi)型

System.Web.Services——包含使您可以利用ASP.NET和XMLWebservices客戶(hù)端來(lái)創(chuàng)立XMLWebservices的類(lèi)。XMLWebservices是一些應(yīng)用程序,它們提供了在使用標(biāo)準(zhǔn)協(xié)議〔如HTTP、XML、XSD、SOAP和WSDL〕的松耦合環(huán)境下進(jìn)行消息交換的能力。利用XMLWebservices,可以在異質(zhì)環(huán)境下的公司內(nèi)部和公司之間生成模塊化應(yīng)用程序,使它們與各種各樣的實(shí)現(xiàn)、平臺(tái)和設(shè)備交互操作。這些應(yīng)用程序基于SOAP的XML消息的各局部可以是嚴(yán)格定義的〔結(jié)構(gòu)化和類(lèi)型化〕或松散定義的〔使用任意XML〕。這些消息能夠隨時(shí)間而開(kāi)展,并且不會(huì)破壞協(xié)議,這種能力對(duì)于作為未來(lái)Web構(gòu)造塊的XMLWebservices的靈活性和可靠性來(lái)說(shuō)是最根本的

System.Web.UI——提供使您可以創(chuàng)立以Web頁(yè)上的用戶(hù)界面形式出現(xiàn)在Web應(yīng)用程序中的控件和頁(yè)的類(lèi)和接口。此命名空間包括Control類(lèi),該類(lèi)為所有控件〔不管是HTML控件、Web控件還是用戶(hù)控件〕提供一組通用功能。它還包括Page控件,每當(dāng)對(duì)Web應(yīng)用程序中的頁(yè)發(fā)出請(qǐng)求時(shí),都會(huì)自動(dòng)生成此控件。另外還提供了一些類(lèi),這些類(lèi)提供Web窗體效勞器控件數(shù)據(jù)綁定功能、保存給定控件或頁(yè)的視圖狀態(tài)的能力,以及對(duì)可編程控件和文本控件都適用的分析功能。子命名空間有Design、Design.WebControls、UI.HtmlControls、MobileControls和WebControls等

System.Windows.Forms——包含用于創(chuàng)立基于Windows的應(yīng)用程序的類(lèi),這些應(yīng)用程序可以充分利用MicrosoftWindows操作系統(tǒng)中的豐富用戶(hù)界面功能。其子命名空間Design包含支持Windows窗體組件的設(shè)計(jì)時(shí)配置和行為的類(lèi)。這些類(lèi)包括:提供Windows窗體組件〔即一組設(shè)計(jì)時(shí)效勞〕支持的設(shè)計(jì)器類(lèi)、用于配置特定屬性類(lèi)型的UITypeEditor類(lèi),以及用于導(dǎo)入ActiveX控件的類(lèi)

System.Xml——提供基于標(biāo)準(zhǔn)的XML處理支持

System.Xml.Schema——包含提供基于標(biāo)準(zhǔn)的XML模式定義語(yǔ)言(XSD)模式支持的XML類(lèi)

——包含用于將對(duì)象序列化為XML格式的文檔或流的類(lèi)

System.Xml.XPath——包含XPath分析器和計(jì)算引擎。它支持W3CXML路徑語(yǔ)言(XPath)1.0版建議(/TR/xpath)

System.Xml.Xsl——提供可擴(kuò)展樣式表轉(zhuǎn)換(XSLT)轉(zhuǎn)換支持。它支持W3CXSL轉(zhuǎn)換(XSLT)1.0版建議

使用命名空間時(shí)需要加關(guān)鍵字usingnamespace,并將多級(jí)命名空間的句點(diǎn)分隔符.換成雙冒號(hào)::。還需要在使用命名空間的前面,加上使用對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù),形式似包含頭文件,但關(guān)鍵字改為using,且保持多級(jí)命名空間的句點(diǎn)分隔符.不變。例如:

#using<System.xml.dll>

usingnamespaceSystem;

usingnamespaceSystem::Xml;

.NET框架中類(lèi),都是托管類(lèi)。一般只能創(chuàng)立托管類(lèi)對(duì)象的指針,而不能直接創(chuàng)立對(duì)象本身。另外,對(duì)類(lèi)中的方法和屬性的使用,也要采用::分隔符,例如:

String^filename="info.xml";

XmlTextReader^reader=newXmlReader(filename);

reader->WhitespaceHandling=WhitespaceHandling::None;

Console::WriteLine("\nOriginalDocument{0}:\n",filename);

下面只列出我們例子中常用的兩個(gè)命名空間以及里面最常用的幾個(gè)類(lèi)的內(nèi)容:

System命名空間的層次結(jié)構(gòu),以及其中的根底數(shù)據(jù)類(lèi)型類(lèi)、Console類(lèi)和String類(lèi)的成員;

System.Xml命名空間的層次結(jié)構(gòu),以及其中的XmlTextReader、XmlTextWriter、XmlValidatingReader和XmlDocumentConsole等類(lèi)的成員。

1〕System命名空間

下面是System常用命名空間的類(lèi)層次結(jié)構(gòu):

System.Object

System.ArraySystem.ICloneable,System.Collections.IList,

System.Console

System.Delegate

System.Exception

System.StringSystem.IComparable,System.ICloneable,System.IConvertible,

System.ValueType

System.ArgIterator

System.BooleanSystem.IComparable,System.IConvertible

System.ByteSystem.IComparable,System.IFormattable,System.IConvertible

System.CharSystem.IComparable,System.IConvertible

System.DateTimeSystem.IComparable,System.IFormattable,System.IConvertible

System.DecimalSystem.IFormattable,System.IComparable,System.IConvertible

System.DoubleSystem.IComparable,System.IFormattable,System.IConvertible

System.Enum

System.GuidSystem.IFormattable,System.IComparable

System.Int16System.IComparable,System.IFormattable,System.IConvertible

System.Int32System.IComparable,System.IFormattable,System.IConvertible

System.Int64System.IComparable,System.IFormattable,System.IConvertible

System.RuntimeArgumentHandle

System.SByteSystem.IComparable,System.IFormattable,System.IConvertible

System.SingleSystem.IComparable,System.IFormattable,System.IConvertible

System.TimeSpanSystem.IComparable

System.TypedReference

System.UInt16System.IComparable,System.IFormattable,System.IConvertible

System.UInt32System.IComparable,System.IFormattable,System.IConvertible

System.UInt64System.IComparable,System.IFormattable,System.IConvertible

System.Void

2〕根底數(shù)據(jù)類(lèi)型類(lèi)

System命名空間中的根底數(shù)據(jù)類(lèi)型類(lèi)

類(lèi)別

類(lèi)名

說(shuō)明

C++托管擴(kuò)展數(shù)據(jù)類(lèi)型

整數(shù)

Byte

8位的無(wú)符號(hào)整數(shù)

char

SByte

8位的有符號(hào)整數(shù),不符合CLS

signedchar

Int16

16位的有符號(hào)整數(shù)

short

Int32

32位的有符號(hào)整數(shù)

int或long

Int64

64位的有符號(hào)整數(shù)

__int64

UInt16

16位的無(wú)符號(hào)整數(shù),不符合CLS

unsignedshort

UInt32

32位的無(wú)符號(hào)整數(shù),不符合CLS

unsignedint或unsignedlong

UInt64

64位的無(wú)符號(hào)整數(shù),不符合CLS

unsigned__int64

浮點(diǎn)

Single

單精度〔32位〕浮點(diǎn)數(shù)字

float

Double

雙精度〔64位〕浮點(diǎn)數(shù)字

double

邏輯

Boolean

布爾值〔真或假〕

bool

其他

Char

Unicode〔16位〕字符

wchar_t

Decimal

96位十進(jìn)制值

Decimal

IntPtr

大小取決于根底平臺(tái)〔32位平臺(tái)上為32位值,64位平臺(tái)上為64位值〕的有符號(hào)整數(shù)

IntPtr無(wú)內(nèi)置類(lèi)型

UIntPtr

大小取決于根底平臺(tái)的無(wú)符號(hào)整數(shù)〔32位平臺(tái)上為32位值,64位平臺(tái)上為64位值〕,不符合CLS

UIntPtr無(wú)內(nèi)置類(lèi)型

類(lèi)對(duì)象

Object

對(duì)象層次結(jié)構(gòu)的根

Object*

String

Unicode字符的不變的定長(zhǎng)串

String*

3〕Console類(lèi)

System.Object

System.Console

public__gc__sealedclassConsole//其中g(shù)c=garbagecollection垃圾回收

//__sealed〔密封的〕關(guān)鍵字指定該類(lèi)不能成為基類(lèi)或該虛方法不能被重寫(xiě)

Console類(lèi)的成員

公共屬性

Error獲取標(biāo)準(zhǔn)錯(cuò)誤輸出流〔staticTextWriter*〕

In獲取標(biāo)準(zhǔn)輸入流〔staticTextReader*〕

Out獲取標(biāo)準(zhǔn)輸出流〔staticTextWriter*〕

公共方法

OpenStandardError獲取標(biāo)準(zhǔn)錯(cuò)誤流

OpenStandardInput獲取標(biāo)準(zhǔn)輸入流

OpenStandardOutput獲取標(biāo)準(zhǔn)輸出流

Read從標(biāo)準(zhǔn)輸入流讀取下一個(gè)字符〔staticintRead()throwIOException;〕

ReadLine從標(biāo)準(zhǔn)輸入流讀取下一行字符〔staticString*ReadLine()throwIOException,OutOfMemoryException;〕

SetError將Error屬性設(shè)為指定的TextWriter

SetIn將In屬性設(shè)置為指定的TextReader

SetOut將Out屬性設(shè)置為指定的TextWriter

Write將指定的信息寫(xiě)入標(biāo)準(zhǔn)輸出流

WriteLine將指定的數(shù)據(jù)〔后跟當(dāng)前行結(jié)束符〕寫(xiě)入標(biāo)準(zhǔn)輸出流

其中,Write和WriteLine方法的常用格式為:

staticvoidWrite[Line](String*format,Object*arg0,Object*arg1,...)

throwIOException,ArgumentNullException,FormatException;

語(yǔ)義同String.Format方法:

public:staticString*Format(String*format,Object*arg0,Object*arg1,...)

throwArgumentNullException,FormatException;

里面的格式化字符串format的常用形式為S〞...{0}...{1}...〞,其中的{i}對(duì)應(yīng)于第i個(gè)輸出對(duì)象。如果輸出的對(duì)象是普通數(shù)值變量,還需要包入盒子__box中〔用于從現(xiàn)有__value類(lèi)對(duì)象創(chuàng)立托管對(duì)象,稱(chēng)之為“裝箱〞過(guò)程〕。例如:

Console::Write(S"[{0}]({1}){2}",__box(i),__box(reader->NodeType),reader->Name);

Console::WriteLine(S"\nNotwell-formederrorat({0},{1}):\n\t{2}",

__box(e->LineNumber),__box(e->LinePosition),e->Message);

其中格式化字符串前的字母S,用于將普通的單字節(jié)字符串,轉(zhuǎn)化為Unicode的雙字節(jié)String字符串。這與在COM組件編程中,用L字母將單字節(jié)字符串,轉(zhuǎn)化為雙字節(jié)的BSTR串是類(lèi)似的。

4〕String類(lèi)

System.Object

System.String

[Serializable]//可序列化的類(lèi)

public__gc__sealedclassString:publicIComparable,ICloneable,IConvertible,IEnumerable

String類(lèi)的成員

公共構(gòu)造函數(shù)

String初始化String類(lèi)的新實(shí)例〔常見(jiàn)的為String(char*value);或直接賦初值String*str=“...〞;〕

公共字段

Empty表示空字符串,為只讀字段

公共屬性

Chars獲取此實(shí)例中位于指定字符位置的字符

Length獲取此實(shí)例中的字符數(shù)

公共方法

Clone返回對(duì)此String實(shí)例的引用

Compare比較兩個(gè)指定的String對(duì)象

CompareOrdinal通過(guò)計(jì)算每個(gè)字符串中相應(yīng)Char對(duì)象的數(shù)值來(lái)比較兩個(gè)String對(duì)象

CompareTo將此實(shí)例與指定的對(duì)象進(jìn)行比較

Concat連接String的一個(gè)或多個(gè)實(shí)例,或Object的一個(gè)或多個(gè)實(shí)例的值的String表示形式

Copy創(chuàng)立一個(gè)與指定的String具有相同值的String的新實(shí)例

CopyTo將指定數(shù)目的字符從此實(shí)例中的指定位置復(fù)制到Unicode字符數(shù)組中的指定位置

EndsWith確定此實(shí)例的末尾是否與指定的String匹配

Equals確定兩個(gè)String對(duì)象是否具有相同的值

Format將指定的String中的每個(gè)格式項(xiàng)替換為相應(yīng)對(duì)象的值的文本等效項(xiàng)

GetEnumerator檢索一個(gè)可以循環(huán)訪問(wèn)此實(shí)例中的每個(gè)字符的對(duì)象

GetHashCode返回該實(shí)例的哈希代碼

GetType〔從Object繼承〕獲取當(dāng)前實(shí)例的Type

GetTypeCode返回類(lèi)String的TypeCode

IndexOf報(bào)告String在此實(shí)例中的第一個(gè)匹配項(xiàng)的索引或一個(gè)或多個(gè)字符的索引

IndexOfAny報(bào)告指定Unicode字符數(shù)組中的任意字符在此實(shí)例中第一個(gè)匹配項(xiàng)的索引

Insert在此實(shí)例中的指定索引位置插入一個(gè)指定的String實(shí)例

Intern檢索系統(tǒng)對(duì)指定String的引用

IsInterned檢索對(duì)指定String的引用

Join在指定String數(shù)組的每個(gè)元素之間串聯(lián)指定的分隔符String,從而產(chǎn)生單個(gè)串聯(lián)的字符串

LastIndexOf報(bào)告指定的Unicode字符或String在此實(shí)例中的最后一個(gè)匹配項(xiàng)的索引位置

LastIndexOfAny報(bào)告在Unicode數(shù)組中指定的一個(gè)或多個(gè)字符在此實(shí)例中的最后一個(gè)匹配項(xiàng)的索引位置

PadLeft右對(duì)齊此實(shí)例中的字符,在左邊用空格或指定的Unicode字符填充以到達(dá)指定的總長(zhǎng)度

PadRight左對(duì)齊此字符串中的字符,在右邊用空格或指定的Unicode字符填充以到達(dá)指定的總長(zhǎng)度

Remove從此實(shí)例中的指定位置開(kāi)始刪除指定數(shù)目的字符

Replace將此實(shí)例中的指定Unicode字符或String的所有匹配項(xiàng)替換為其他指定的Unicode字符或String

Split標(biāo)識(shí)此實(shí)例中的子字符串〔它們由數(shù)組中指定的一個(gè)或多個(gè)字符進(jìn)行分隔〕,然后將這些子字符串放入一個(gè)String數(shù)組中

StartsWith確定此實(shí)例的開(kāi)始處是否與指定的String匹配

Substring從此實(shí)例檢索子字符串

ToCharArray將此實(shí)例中的字符復(fù)制到Unicode字符數(shù)組

ToLower返回此String的小寫(xiě)形式的副本

ToString將此實(shí)例的值轉(zhuǎn)換為String

ToUpper返回此String的大寫(xiě)形式的副本

Trim從此實(shí)例的開(kāi)始位置和末尾移除一組指定字符的所有匹配項(xiàng)

TrimEnd從此實(shí)例的結(jié)尾移除數(shù)組中指定的一組字符的所有匹配項(xiàng)

TrimStart從此實(shí)例的開(kāi)始位置移除數(shù)組中指定的一組字符的所有匹配項(xiàng)

公共運(yùn)算符

相等運(yùn)算符==確定兩個(gè)指定的String對(duì)象是否具有同一值

不等運(yùn)算符!=確定兩個(gè)指定的String對(duì)象是否具有不同的值

受保護(hù)的方法

Finalize〔從Object繼承〕允許Object在“垃圾回收〞回收Object之前嘗試釋放資源并執(zhí)行其他清理操作。在C++中,使用析構(gòu)函數(shù)語(yǔ)法來(lái)表示終結(jié)程序

MemberwiseClone〔從Object繼承〕創(chuàng)立當(dāng)前Object的淺表副本

下面介紹基于.NET平臺(tái)的XML編程。

3.System.Xml命名空間

下面是System.Xml命名空間的層次結(jié)構(gòu):

System.Object

System.Delegate

System.MulticastDelegate

System.Exception

System.SystemException

System.Xml.XmlException

System.ValueType

System.Enum

System.Xml.ValidationType

System.Xml.WhitespaceHandling

System.Xml.XmlNodeType

System.Xml.XmlNode

System.Xml.XmlAttribute

System.Xml.XmlDocument

System.Xml.XmlText

System.Xml.XmlElement

System.Xml.XmlReader

System.Xml.XmlTextReader

System.Xml.XmlValidatingReader

System.Xml.XmlTextWriter

.NETFramework中的XML型類(lèi),為使用XML文檔和數(shù)據(jù),提供了全面、集成的類(lèi)集。.NETFramework中的XML類(lèi)可以分為幾組:用XmlTextReader和XmlTextWriter分析和編寫(xiě)XML,用XmlValidatingReader驗(yàn)證XML,和用XmlDocument編輯XML文檔。XslTransform、XmlSchema和XPathNavigator類(lèi)支持執(zhí)行XSL轉(zhuǎn)換(XSLT)、編輯XML模式定義語(yǔ)言(XSD)模式和應(yīng)用XPath查詢(xún)。XmlException類(lèi)那么處理與XML有關(guān)的異常。

下面是其中幾個(gè)常用類(lèi)及其成員:

〔1〕XmlException類(lèi)

System.Object

System.Exception

System.SystemException

[Serializable]

publicrefclassXmlException:publicSystemException

XmlException類(lèi)的成員

公共構(gòu)造函數(shù)

XmlException初始化XmlException類(lèi)的新實(shí)例〔如XmlException([String^message]);〕

公共屬性

HelpLink〔從Exception繼承〕獲取或設(shè)置指向此異常所關(guān)聯(lián)幫助文件的鏈接

InnerException〔從Exception繼承〕獲取導(dǎo)致當(dāng)前異常的Exception實(shí)例

LineNumber獲取指示錯(cuò)誤發(fā)生位置的行號(hào)〔int〕

LinePosition獲取指示錯(cuò)誤發(fā)生位置的行位置〔int〕

Message獲取描述當(dāng)前異常的消息〔String*〕

Source〔從Exception繼承〕獲取或設(shè)置導(dǎo)致錯(cuò)誤的應(yīng)用程序或?qū)ο蟮拿Q(chēng)

StackTrace〔從Exception繼承〕獲取當(dāng)前異常發(fā)生時(shí)調(diào)用堆棧上的幀的字符串表示形式

TargetSite〔從Exception繼承〕獲取引發(fā)當(dāng)前異常的方法

公共方法

Equals〔從Object繼承〕確定兩個(gè)Object實(shí)例是否相等

GetBaseException〔從Exception繼承〕當(dāng)在派生類(lèi)中重寫(xiě)時(shí),返回Exception,它是一個(gè)或多個(gè)并發(fā)的異常的根源

GetHashCode〔從Object繼承〕用作特定類(lèi)型的哈希函數(shù),適合在哈希算法和數(shù)據(jù)結(jié)構(gòu)〔如哈希表〕中使用

GetObjectData對(duì)于給定的StreamingContext,將所有的XmlException屬性流入SerializationInfo類(lèi)

GetType〔從Object繼承〕獲取當(dāng)前實(shí)例的Type

ToString〔從Exception繼承〕創(chuàng)立并返回當(dāng)前異常的字符串表示形式

受保護(hù)的構(gòu)造函數(shù)

XmlException初始化XmlException類(lèi)的新實(shí)例

受保護(hù)的屬性

HResult〔從Exception繼承〕獲取或設(shè)置HRESULT,它是分配給特定異常的編碼數(shù)值

受保護(hù)的方法

Finalize〔從Object繼承〕允許Object在“垃圾回收〞回收Object之前嘗試釋放資源并執(zhí)行其他清理操作。在C++中,使用析構(gòu)函數(shù)語(yǔ)法來(lái)表示終結(jié)程序

MemberwiseClone〔從Object繼承〕創(chuàng)立當(dāng)前Object的淺表副本

在.NET中還包含幾個(gè)非DOM的實(shí)用類(lèi)——從抽象類(lèi)XmlReader派生的XmlTextReader類(lèi)和XmlValidatingReader類(lèi)和從抽象類(lèi)XmlWriter派生的XmlTextWriter類(lèi)。它們的行為與SAX的有一點(diǎn)類(lèi)似,但又不是SAX接口類(lèi)。XmlTextReader類(lèi)用于讀取和分析XML文檔,同時(shí)還可以檢查文檔是否良構(gòu);XmlValidatingReader類(lèi)那么可以驗(yàn)證XML文檔的有效性,看其是否符合DTD或Schema;XmlTextWriter類(lèi)可以用來(lái)生成和輸出XML文檔。

下面是這幾個(gè)類(lèi)的根本信息:

〔2〕XmlTextReader類(lèi)

System.Object

public__gcclassXmlTextReader:publicXmlReader,IXmlLineInfo

XmlTextReader類(lèi)的成員

公共構(gòu)造函數(shù)

XmlTextReader初始化XmlTextReader的新實(shí)例〔如XmlTextReader(String*url);〕

公共屬性

AttributeCount獲取當(dāng)前節(jié)點(diǎn)上的屬性數(shù)

BaseURI獲取當(dāng)前節(jié)點(diǎn)的基URI

CanResolveEntity〔從XmlReader繼承〕獲取一個(gè)值,該值指示此讀取器是否可以分析和解析實(shí)體

Depth獲取XML文檔中當(dāng)前節(jié)點(diǎn)的深度

Encoding獲取文檔的編碼方式

EOF獲取一個(gè)值,該值指示讀取器是否認(rèn)位在流的結(jié)尾

HasAttributes〔從XmlReader繼承〕獲取一個(gè)值,該值指示當(dāng)前節(jié)點(diǎn)是否有任何屬性

HasValue獲取一個(gè)值,該值指示當(dāng)前節(jié)點(diǎn)是否可以具有Value

IsDefault獲取一個(gè)值,該值指示當(dāng)前節(jié)點(diǎn)是否是從DTD或模式中定義的默認(rèn)值生成的屬性

IsEmptyElement獲取一個(gè)值,該值指示當(dāng)前節(jié)點(diǎn)是否為空元素

Item獲取屬性的值

LineNumber獲取當(dāng)前行號(hào)

LinePosition獲取當(dāng)前行位置

LocalName獲取當(dāng)前節(jié)點(diǎn)的本地名稱(chēng)

Name獲取當(dāng)前節(jié)點(diǎn)的限定名

Namespaces獲取或設(shè)置一個(gè)值,該值指示是否進(jìn)行命名空間支持

NamespaceURI獲取讀取器定位在的節(jié)點(diǎn)的命名空間URI〔采用W3C命名空間標(biāo)準(zhǔn)中定義的形式〕

NameTable獲取與此實(shí)現(xiàn)關(guān)聯(lián)的XmlNameTable

NodeType獲取當(dāng)前節(jié)點(diǎn)的類(lèi)型

Normalization獲取或設(shè)置一個(gè)值,該值指示是否正常化空白和屬性值

Prefix獲取與當(dāng)前節(jié)點(diǎn)關(guān)聯(lián)的命名空間前綴

QuoteChar獲取用于括起屬性節(jié)點(diǎn)值的引號(hào)字符

ReadState獲取讀取器的狀態(tài)

Value獲取當(dāng)前節(jié)點(diǎn)的文本值

WhitespaceHandling獲取或設(shè)置一個(gè)值,該值指定如何處理空白

XmlLang獲取當(dāng)前xml:lang范圍

XmlResolver設(shè)置用于解析DTD引用的XmlResolver

XmlSpace獲取當(dāng)前xml:space范圍

公共方法

Close將ReadState更改為Closed

Equals〔從Object繼承〕確定兩個(gè)Object實(shí)例是否相等

GetAttribute獲取屬性的值

GetHashCode〔從Object繼承〕用作特定類(lèi)型的哈希函數(shù),適合在哈希算法和數(shù)據(jù)結(jié)構(gòu)〔如哈希表〕中使用

GetRemainder獲取已緩沖的XML剩余局部

GetType〔從Object繼承〕獲取當(dāng)前實(shí)例的Type

IsStartElement〔從XmlReader繼承〕測(cè)試當(dāng)前內(nèi)容節(jié)點(diǎn)是否是元素的開(kāi)始標(biāo)記

LookupNamespace解析當(dāng)前元素的范圍內(nèi)的命名空間前綴

MoveToAttribute移動(dòng)到指定的屬性

MoveToContent〔從XmlReader繼承〕檢查當(dāng)前節(jié)點(diǎn)是否是內(nèi)容〔非空白文本、CDATA、Element、EndElement、EntityReference或EndEntity〕節(jié)點(diǎn)。如果此節(jié)點(diǎn)不是內(nèi)容節(jié)點(diǎn),那么讀取器向前跳至下一個(gè)內(nèi)容節(jié)點(diǎn)或文件結(jié)尾。它跳過(guò)以下類(lèi)型的節(jié)點(diǎn):ProcessingInstruction、DocumentType、Comment、Whitespace或SignificantWhitespace

MoveToElement移動(dòng)到包含當(dāng)前屬性節(jié)點(diǎn)的元素

MoveToFirstAttribute移動(dòng)到第一個(gè)屬性

MoveToNextAttribut移動(dòng)到下一個(gè)屬性

Read從流中讀取下一個(gè)節(jié)點(diǎn)

ReadAttributeValue將屬性值分析為一個(gè)或多個(gè)Text、EntityReference或EndEntity節(jié)點(diǎn)

ReadBase64對(duì)Base64進(jìn)行解碼并返回解碼的二進(jìn)制字節(jié)

ReadBinHex對(duì)BinHex進(jìn)行解碼并返回解碼的二進(jìn)制字節(jié)

ReadChars將元素的文本內(nèi)容讀入字符緩沖區(qū)。通過(guò)連續(xù)調(diào)用此方法,可以讀取大的嵌入文本流

ReadElementString〔從XmlReader繼承〕這是一個(gè)用于讀取簡(jiǎn)單純文本元素的Helper方法

ReadEndElement〔從XmlReader繼承〕檢查當(dāng)前內(nèi)容節(jié)點(diǎn)是否為結(jié)束標(biāo)記并將讀取器推進(jìn)到下一個(gè)節(jié)點(diǎn)

ReadInnerXml〔從XmlReader繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),將所有內(nèi)容〔包括標(biāo)記〕當(dāng)做字符串讀取

ReadOuterXml〔從XmlReader繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),讀取表示該節(jié)點(diǎn)和所有它的子級(jí)的內(nèi)容〔包括標(biāo)記〕

ReadStartElement〔從XmlReader繼承〕檢查當(dāng)前節(jié)點(diǎn)是否為元素并將讀取器推進(jìn)到下一個(gè)節(jié)點(diǎn)

ReadString〔從XmlReader繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),將元素或文本節(jié)點(diǎn)的內(nèi)容當(dāng)做字符串讀取

ResetState將讀取器的狀態(tài)重置為ReadState.Initial

ResolveEntity解析EntityReference節(jié)點(diǎn)的實(shí)體引用

Skip〔從XmlReader繼承〕跳過(guò)當(dāng)前節(jié)點(diǎn)的子級(jí)

ToString〔從Object繼承〕返回表示當(dāng)前Object的String

受保護(hù)的構(gòu)造函數(shù)

XmlTextReader初始化XmlTextReader的新實(shí)例

受保護(hù)的方法

Finalize〔從Object繼承〕允許Object在“垃圾回收〞回收Object之前嘗試釋放資源并執(zhí)行其他清理操作。在C#和C++中,使用析構(gòu)函數(shù)語(yǔ)法來(lái)表示終結(jié)程序

MemberwiseClone〔從Object繼承〕創(chuàng)立當(dāng)前Object的淺表副本

〔3〕XmlValidatingReader類(lèi)

System.Object

public__gcclassXmlValidatingReader:publicXmlReader,IXmlLineInfo

XmlValidatingReader類(lèi)的成員

公共構(gòu)造函數(shù)

XmlValidatingReader初始化XmlValidatingReader類(lèi)的新實(shí)例〔例如XmlValidatingReader(XmlReader*reader);〕

公共屬性

AttributeCount獲取當(dāng)前節(jié)點(diǎn)上的屬性數(shù)

BaseURI獲取當(dāng)前節(jié)點(diǎn)的基URI

CanResolveEntity獲取一個(gè)值,該值指示此讀取器是否可以分析和解析實(shí)體

Depth獲取XML文檔中當(dāng)前節(jié)點(diǎn)的深度

Encoding獲取文檔的編碼方式屬性

EntityHandling獲取或設(shè)置一個(gè)值,該值指定讀取器如何處理實(shí)體

EOF獲取一個(gè)值,該值指示讀取器是否認(rèn)位在流的結(jié)尾

HasAttributes〔從XmlReader繼承〕獲取一個(gè)值,該值指示當(dāng)前節(jié)點(diǎn)是否有任何屬性

HasValue獲取一個(gè)值,該值指示當(dāng)前節(jié)點(diǎn)是否可以具有Value

IsDefault獲取一個(gè)值,該值指示當(dāng)前節(jié)點(diǎn)是否是從DTD或模式中定義的默認(rèn)值生成的屬性

IsEmptyElement獲取一個(gè)值,該值指示當(dāng)前節(jié)點(diǎn)是否為空元素

Item獲取指定屬性的值

LocalName獲取當(dāng)前節(jié)點(diǎn)的本地名稱(chēng)

Name獲取當(dāng)前節(jié)點(diǎn)的限定名

Namespaces獲取或設(shè)置一個(gè)值,該值指示是否進(jìn)行命名空間支持

NamespaceURI獲取讀取器定位在的節(jié)點(diǎn)的命名空間URI〔采用W3C命名空間標(biāo)準(zhǔn)中定義的形式〕

NameTable獲取與此實(shí)現(xiàn)關(guān)聯(lián)的XmlNameTable

NodeType獲取當(dāng)前節(jié)點(diǎn)的類(lèi)型

Prefix獲取與當(dāng)前節(jié)點(diǎn)關(guān)聯(lián)的命名空間前綴

QuoteChar獲取用于括起屬性節(jié)點(diǎn)值的引號(hào)字符

Reader獲取用于構(gòu)造此XmlValidatingReader的XmlReader

ReadState獲取讀取器的狀態(tài)

Schemas獲取一個(gè)XmlSchemaCollection以用于驗(yàn)證

SchemaType獲取模式類(lèi)型對(duì)象

ValidationType獲取一個(gè)值,該值描述要執(zhí)行哪種類(lèi)型的驗(yàn)證

Value獲取當(dāng)前節(jié)點(diǎn)的文本值

XmlLang獲取當(dāng)前xml:lang范圍

XmlResolver設(shè)置用于解析外部DTD和模式位置引用的XmlResolver。XmlResolver還用于處理XML模式定義語(yǔ)言(XSD)模式中找到的任何import或include元素

XmlSpace獲取當(dāng)前xml:space范圍

公共方法

Close將ReadState更改為Closed

Equals〔從Object繼承〕確定兩個(gè)Object實(shí)例是否相等

GetAttribute獲取屬性的值

GetHashCode〔從Object繼承〕用作特定類(lèi)型的哈希函數(shù),適合在哈希算法和數(shù)據(jù)結(jié)構(gòu)〔如哈希表〕中使用

GetType〔從Object繼承〕獲取當(dāng)前實(shí)例的Type

IsStartElement〔從XmlReader繼承〕測(cè)試當(dāng)前內(nèi)容節(jié)點(diǎn)是否是開(kāi)始標(biāo)記

LookupNamespace解析當(dāng)前元素的范圍內(nèi)的命名空間前綴

MoveToAttribute移動(dòng)到指定的屬性

MoveToContent〔從XmlReader繼承〕檢查當(dāng)前節(jié)點(diǎn)是否是內(nèi)容〔非空白文本、CDATA、Element、EndElement、EntityReference或EndEntity〕節(jié)點(diǎn)。如果此節(jié)點(diǎn)不是內(nèi)容節(jié)點(diǎn),那么讀取器向前跳至下一個(gè)內(nèi)容節(jié)點(diǎn)或文件結(jié)尾。它跳過(guò)以下類(lèi)型的節(jié)點(diǎn):ProcessingInstruction、DocumentType、Comment、Whitespace或SignificantWhitespace

MoveToElement移動(dòng)到包含當(dāng)前屬性節(jié)點(diǎn)的元素

MoveToFirstAttribute移動(dòng)到第一個(gè)屬性

MoveToNextAttribute移動(dòng)到下一個(gè)屬性

Read從流中讀取下一個(gè)節(jié)點(diǎn)

ReadAttributeValue將屬性值分析為一個(gè)或多個(gè)Text、EntityReference或EndEntity節(jié)點(diǎn)

ReadElementString〔從XmlReader繼承〕這是一個(gè)用于讀取簡(jiǎn)單純文本元素的Helper方法

ReadEndElement〔從XmlReader繼承〕檢查當(dāng)前內(nèi)容節(jié)點(diǎn)是否為結(jié)束標(biāo)記并將讀取器推進(jìn)到下一個(gè)節(jié)點(diǎn)

ReadInnerXml〔從XmlReader繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),將所有內(nèi)容〔包括標(biāo)記〕當(dāng)做字符串讀取

ReadOuterXml〔從XmlReader繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),讀取表示該節(jié)點(diǎn)和所有它的子級(jí)的內(nèi)容〔包括標(biāo)記〕

ReadStartElement〔從XmlReader繼承〕檢查當(dāng)前節(jié)點(diǎn)是否為元素并將讀取器推進(jìn)到下一個(gè)節(jié)點(diǎn)

ReadString將元素或文本節(jié)點(diǎn)的內(nèi)容讀取為一個(gè)字符串

ReadTypedValue獲取指定XML模式定義語(yǔ)言(XSD)類(lèi)型的公共語(yǔ)言運(yùn)行庫(kù)類(lèi)型

ResolveEntity解析EntityReference節(jié)點(diǎn)的實(shí)體引用

Skip〔從XmlReader繼承〕跳過(guò)當(dāng)前節(jié)點(diǎn)的子級(jí)

ToString〔從Object繼承〕返回表示當(dāng)前Object的String

公共事件

ValidationEventHandler設(shè)置事件處理程序以接收有關(guān)DTD、XML數(shù)據(jù)簡(jiǎn)化(XDR)模式和XML模式定義語(yǔ)言(XSD)模式驗(yàn)證錯(cuò)誤的信息

受保護(hù)的方法

Finalize〔從Object繼承〕允許Object在“垃圾回收〞回收Object之前嘗試釋放資源并執(zhí)行其他清理操作。在C++中,使用析構(gòu)函數(shù)語(yǔ)法來(lái)表示終結(jié)程序。

MemberwiseClone〔從Object繼承〕創(chuàng)立當(dāng)前Object的淺表副本

其中,ValidationType枚舉類(lèi)型的定義為:

〔4〕ValidationType枚舉

[Serializable]

__valuepublicenumValidationType{None,Auto,DTD,XDR,Schema};

ValidationType枚舉類(lèi)型的成員

成員名稱(chēng)

數(shù)值

說(shuō)明

Auto

1

XmlValidatingReader驗(yàn)證是否找到DTD或模式信息

DTD

2

根據(jù)DTD進(jìn)行驗(yàn)證

None

0

創(chuàng)立符合XML1.0的非驗(yàn)證分析器。報(bào)告默認(rèn)屬性,并且可以通過(guò)調(diào)用ResolveEntity解析常規(guī)實(shí)體。DOCTYPE不用于驗(yàn)證目的。不引發(fā)驗(yàn)證錯(cuò)誤

Schema

4

根據(jù)XSD模式〔包括內(nèi)聯(lián)模式〕進(jìn)行驗(yàn)證。通過(guò)使用schemaLocation特性或提供的Schemas屬性將XSD模式和命名空間URI關(guān)聯(lián)起來(lái)

XDR

3

根據(jù)XDR模式〔包括內(nèi)聯(lián)模式〕進(jìn)行驗(yàn)證。使用x-schema命名空間前綴或Schemas屬性識(shí)別XDR模式

〔5〕XmlTextWriter類(lèi)

System.Object

public__gcclassXmlTextWriter:publicXmlWriter

XmlTextWriter類(lèi)的成員

公共構(gòu)造函數(shù)

XmlTextWriter創(chuàng)立XmlTextWriter類(lèi)的實(shí)例〔如public:XmlTextWriter(String*filename,Encoding*encoding)throwArgumentException,UnauthorizedAccessException,ArgumentNullException,DirectoryNotFoundException,IOException,SecurityException;〕

公共屬性

BaseStream獲取根底流對(duì)象

Formatting指示如何對(duì)輸出進(jìn)行格式設(shè)置

Indentation獲取或設(shè)置當(dāng)Formatting設(shè)置為Formatting.Indented時(shí)將為層次結(jié)構(gòu)中的每個(gè)級(jí)別書(shū)寫(xiě)多少I(mǎi)ndentChar

IndentChar獲取或設(shè)置當(dāng)Formatting設(shè)置為Formatting.Indented時(shí)哪個(gè)字符用于縮進(jìn)

Namespaces獲取或設(shè)置一個(gè)值,該值指示是否進(jìn)行命名空間支持

QuoteChar獲取或設(shè)置哪個(gè)字符用于將屬性值引起來(lái)

WriteState獲取編寫(xiě)器的狀態(tài)

XmlLang獲取當(dāng)前的xml:lang范圍

XmlSpace獲取表示當(dāng)前xml:space范圍的XmlSpace

公共方法

Close關(guān)閉此流和根底流

Equals〔從Object繼承〕確定兩個(gè)Object實(shí)例是否相等

Flush將緩沖區(qū)中的所有內(nèi)容刷新到根底流,并同時(shí)刷新根底流

GetHashCode〔從Object繼承〕用作特定類(lèi)型的哈希函數(shù),適合在哈希算法和數(shù)據(jù)結(jié)構(gòu)〔如哈希表〕中使用

GetType〔從Object繼承〕獲取當(dāng)前實(shí)例的Type

LookupPrefix返回在當(dāng)前命名空間范圍中為該命名空間URI定義的最近的前綴

ToString〔從Object繼承〕返回表示當(dāng)前Object的String

WriteAttributes〔從XmlWriter繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),寫(xiě)出在XmlReader中當(dāng)前位置找到的所有屬性

WriteAttributeString〔從XmlWriter繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),寫(xiě)出具有指定值的屬性

WriteBase64將指定的二進(jìn)制字節(jié)編碼為Base64并寫(xiě)出結(jié)果文本

WriteBinHex將指定的二進(jìn)制字節(jié)編碼為BinHex并寫(xiě)出結(jié)果文本

WriteCData寫(xiě)出包含指定文本的<![CDATA[...]]>塊

WriteCharEntity為指定的Unicode字符值強(qiáng)制生成字符實(shí)體

WriteChars以每次一個(gè)緩沖區(qū)的方式寫(xiě)入文本

WriteComment寫(xiě)出包含指定文本的注釋<!--...-->

WriteDocType寫(xiě)出具有指定名稱(chēng)和可選屬性的DOCTYPE聲明

WriteElementString〔從XmlWriter繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),寫(xiě)出包含字符串值的元素

WriteEndAttribute關(guān)閉上一個(gè)WriteStartAttribute調(diào)用

WriteEndDocument關(guān)閉任何翻開(kāi)的元素或?qū)傩圆⒕帉?xiě)器重新設(shè)置為Start狀態(tài)

WriteEndElement關(guān)閉一個(gè)元素并彈出相應(yīng)的命名空間范圍

WriteEntityRef按&name;寫(xiě)出實(shí)體引用

WriteFullEndElement關(guān)閉一個(gè)元素并彈出相應(yīng)的命名空間范圍

WriteName寫(xiě)出指定的名稱(chēng),確保它是符合W3CXML1.0建議的有效名稱(chēng)

WriteNmToken寫(xiě)出指定的名稱(chēng),確保它是符合W3CXML1.0建議的有效NmToken

WriteNode〔從XmlWriter繼承〕當(dāng)在派生類(lèi)中被重寫(xiě)時(shí),將所有內(nèi)容從讀取器復(fù)制到編寫(xiě)器并將讀取器移動(dòng)到下一個(gè)同輩的開(kāi)始位置

WriteProcessingInstruction寫(xiě)出在名稱(chēng)和文本之間帶有空格的處理指令,如下所示:<?nametext?>

WriteQualifiedName寫(xiě)出命名空間限定的名稱(chēng)。此方法查找位于給定命名空間范圍內(nèi)的前綴

WriteRaw手動(dòng)書(shū)寫(xiě)原始標(biāo)記

WriteStartAttribute書(shū)寫(xiě)屬性的起始內(nèi)容

WriteStartDocument書(shū)寫(xiě)版本為“1.0”的XML聲明

WriteStartElement寫(xiě)出指定的開(kāi)始標(biāo)記

WriteString書(shū)寫(xiě)給定的文本內(nèi)容

WriteSurrogateCharEntity為代理項(xiàng)字符對(duì)生成并書(shū)寫(xiě)代理項(xiàng)字符實(shí)體

WriteWhitespace寫(xiě)出給定的空白

受保護(hù)的方法

Finalize〔從Object繼承〕允許Object在“垃圾回收〞回收Object之前嘗試釋放資源并執(zhí)行其他清理操作在C++中,使用析構(gòu)函數(shù)語(yǔ)法來(lái)表示終結(jié)程序。

MemberwiseClone〔從Object繼承〕創(chuàng)立當(dāng)前Object的淺表副本

4.DOM類(lèi)集

下面是.NET中的DOM類(lèi)的層次結(jié)構(gòu)〔其中的多數(shù)類(lèi)都是從節(jié)點(diǎn)類(lèi)派生的,括號(hào)內(nèi)為對(duì)應(yīng)的節(jié)點(diǎn)類(lèi)型〕:

其中,后面的幾個(gè)類(lèi)不是從XmlNode派生的:

XmlImplementation——用于創(chuàng)立XML文檔

XmlNamedNodeMap——處理未排序的節(jié)點(diǎn)集〔屬性集〕

XmlNodeList——處理已排序的節(jié)點(diǎn)列表〔子元素集〕

XmlNodeChangedEventArgs——處理在XmlDocument上注冊(cè)的事件處理程序

另外,XmlLinkedNode類(lèi)從XmlNode繼承。其目的在于重寫(xiě)兩個(gè)來(lái)自XmlNode的方法:PreviousSibling和NextSibling方法。然后,這些重寫(xiě)方法由具有上一個(gè)和下一個(gè)同輩的類(lèi)XmlCharacterData、XmlDeclaration、XmlDocumentType、XmlElement、XmlEntityReference和XmlProcessingInstruction繼承和使用。

下面是.NET中使用的節(jié)點(diǎn)類(lèi)型及其對(duì)應(yīng)的類(lèi),其中有一些是DOM標(biāo)準(zhǔn)節(jié)點(diǎn),有一些是.NET的擴(kuò)展。.NET中共有17種節(jié)點(diǎn)類(lèi)型,它們?cè)诿杜e變量XmlNodeType中定義〔包含None在內(nèi),共有18種枚舉值〕:

〔1〕XmlNodeType枚舉

[Serializable]

__valuepublicenumXmlNodeType{None,Element,Attribute,Tex

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論