畢業(yè)設(shè)計(jì)-酒店點(diǎn)菜系統(tǒng)—論文.doc_第1頁
畢業(yè)設(shè)計(jì)-酒店點(diǎn)菜系統(tǒng)—論文.doc_第2頁
畢業(yè)設(shè)計(jì)-酒店點(diǎn)菜系統(tǒng)—論文.doc_第3頁
畢業(yè)設(shè)計(jì)-酒店點(diǎn)菜系統(tǒng)—論文.doc_第4頁
畢業(yè)設(shè)計(jì)-酒店點(diǎn)菜系統(tǒng)—論文.doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余35頁可下載查看

下載本文檔

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

文檔簡(jiǎn)介

酒店點(diǎn)菜系統(tǒng)摘要隨著越來越多的站點(diǎn)對(duì)RSS的支持,RSS已經(jīng)成為目前最成功的XML應(yīng)用。RSS搭建了信息迅速傳播的一個(gè)技術(shù)平臺(tái),使得每個(gè)人都成為潛在的信息提供者。相信很快我們就會(huì)看到大量基于RSS的專業(yè)門戶、聚合站點(diǎn)和更精確的搜索引擎。剛剛起步的RSS(Really Simple Syndication,技術(shù)業(yè)務(wù)正在不斷吸引著那些依賴于網(wǎng)絡(luò)廣告的商家的注意。RSS的英文全名是Really Simple Syndication(真正簡(jiǎn)單聯(lián)合供稿系統(tǒng)),是一種用來聚集搜集新聞標(biāo)題或是提供網(wǎng)頁內(nèi)容的格式,以XML可延伸標(biāo)記語言為基礎(chǔ)。如今RSS最廣泛的使用在將網(wǎng)站的最新頭條新聞或內(nèi)容有效率的整理出來,提供需求者參考。并且也是一種網(wǎng)站和網(wǎng)站之間共享內(nèi)容的簡(jiǎn)易方式。也就是說RSS不但可以描述網(wǎng)站上的新聞格式,以及網(wǎng)志。更可以通過RSS讓別人更容易發(fā)現(xiàn)你的網(wǎng)站以及追蹤新聞的來源。一些大的網(wǎng)站如BBC, CNET, CNN, Disney, Wired等的網(wǎng)站訊息都是透過RSS來當(dāng)作訊息傳播的媒介。 RSS的出現(xiàn)解決了網(wǎng)站管理所必須面臨的許多問題,使的網(wǎng)絡(luò)上傳遞和搜集訊息更加的方便,一方面也保證網(wǎng)絡(luò)傳輸?shù)乃俣龋鲞M(jìn)了網(wǎng)絡(luò)聯(lián)機(jī)的質(zhì)量。當(dāng)網(wǎng)站上看到這樣的圖標(biāo)或是 等,都意味著可以使用網(wǎng)站上RSS的服務(wù)。本課題是研究在.NET Framework中,通過使用XmlTextReader和XmlTextWriter類對(duì)xml數(shù)據(jù)的讀和寫操作,即讀寫RSS文檔。開發(fā)環(huán)境是Visual Studio 2005 ,開發(fā)所用的語言是C。關(guān)鍵字 RSS 、XmlTextReader、XmlTextWriter、C# 、.NET FrameworkAbstractAs more sites on the support of RSS, RSS has become the most successful application of XML. RSS structure of the rapid dissemination of information in a technology platform, making everyone has the potential to become information providers. Believe that soon we will see a large number of RSS-based professional portal site polymerization and more precise search engine. RSS technology business is to continue to attract those who rely on Internet advertisements to the attention of businessmen.The full name of the rss is Really Simple Syndication ,which is used to gather a collection of news headlines or provide website content, the format, XML can be extended markup language based. Now RSS the most extensive use of the site will be the latest news headlines or content efficient sorted out, demand for the provision of reference materials. And is also a web site and web content sharing between the summary. RSS is not only can be described on the website news format and bloggers. RSS can also let others more easily find your site, as well as tracking the sources of news. Some of the major websites such as the BBC, CNET, CNN, Disney, Wired, and so on the website message through RSS as to spread the message of the media. RSS resolve the emergence of the website management must face many problems, enable the network to collect and transmit information more convenient, but it is also securing network transmission speed, enhanced the quality of on-line networks. When the website to see the icon or the other, it means can be used on the website RSS services. The topic is the study. NET Framework, through the use of XmlTextReader and XmlTextWriter xml data type to read and write, read and write RSS document. Development environment is Visual Studio 2005. Development of thelanguage used is C #。KEY worlds:RSS 、XmlTextReader、XmlTextWriter、C# 、.NET Framework目錄摘要1Abstract2第一章緒論41.1開發(fā)背景41.1.1國(guó)內(nèi)外在該方向的研究現(xiàn)狀及分析51.2開發(fā)意義51.3本章小結(jié)6第二章 開發(fā)環(huán)境以及技術(shù)介紹62.1開發(fā)平臺(tái)介紹62.1.1 操作系統(tǒng) : windows xp62.1.2 數(shù)據(jù)庫管理系統(tǒng)Sql server 200062.1.3 開發(fā)所用主要語言 C# ,Xml。62.1.4 visual studio 200562.2 開發(fā)與運(yùn)行軟件所要求的硬件環(huán)境72.3 Xml介紹。72.4 本章小結(jié)11第三章 總體設(shè)計(jì)123.1 系統(tǒng)需求分析123.2系統(tǒng)功能設(shè)計(jì)133.2.1添加Rss模塊。133.2.2頻道管理模塊ChannelManager133.2.3內(nèi)容搜索模塊。133.2.4備份與導(dǎo)入管理模塊。143.2.5下面是RSS閱讀的功能原理圖:143.3 本章小結(jié)14第四章 數(shù)據(jù)庫設(shè)計(jì)154.1 數(shù)據(jù)庫設(shè)計(jì)154.1.1 數(shù)據(jù)表設(shè)計(jì)154.1.2 在數(shù)據(jù)庫中建立表154.2本章小結(jié)16第五章 系統(tǒng)實(shí)現(xiàn)175.1 系統(tǒng)主要功能模塊的具體實(shí)現(xiàn)175.1.1 XML 讀取器175.1.2 使用XmlTextReader類解析175.1.3. 實(shí)現(xiàn)添加Rss欄目的關(guān)鍵代碼185.1.4 添加Rss頻道的關(guān)鍵代碼215.1.5 XML 編寫器255.1.6讀取解析并保存Rss文檔255.2 .net 框架的讀取器和編寫器325.3 數(shù)據(jù)庫連接335.3.1數(shù)據(jù)庫連接具體代碼345.4 本章小結(jié)35第六章 系統(tǒng)調(diào)試366.1 單元測(cè)試366.2 主界面調(diào)試366.3 其他數(shù)據(jù)輸入模式的測(cè)試366.4 本章小結(jié)36總結(jié)37致謝38第一章 緒論1.1開發(fā)背景隨著互聯(lián)網(wǎng)的高速發(fā)展,人們的生活也發(fā)生了重要的變化,許多人都習(xí)慣于通過網(wǎng)絡(luò)來獲取感興趣的信息。而每個(gè)網(wǎng)站都可作為一個(gè)生產(chǎn)信息的基地,這充分體現(xiàn)了網(wǎng)絡(luò)時(shí)代給人類帶來的極大方便。然而目前來說還存在一個(gè)很大的缺陷,即每個(gè)網(wǎng)站或系統(tǒng)彼此都是獨(dú)立的,各自的數(shù)據(jù)都是無法共享的。要解決這個(gè)問題,實(shí)現(xiàn)共享,就需要通過復(fù)制然后粘貼的形式。顯然,這極大地限制了各網(wǎng)站信息價(jià)值的最大化體現(xiàn),同時(shí)也加重了實(shí)現(xiàn)共享所要付出的成本。而網(wǎng)站與網(wǎng)站之間進(jìn)行信息共享與交換卻隨著信息量的不斷增大而變的日益突現(xiàn)。基于這種現(xiàn)實(shí)的問題和需求Netscape公司推出的一項(xiàng)信息同步技術(shù),也就是我們現(xiàn)在所說的技術(shù),以期來解決該問題因?yàn)樗捎玫男畔⒈?示標(biāo)準(zhǔn)首先它是符合標(biāo)準(zhǔn)的定義,而且已是大家都公認(rèn)的,且開放的一種信息表示方式同時(shí)RSS技術(shù)又通過標(biāo)準(zhǔn)定義一套能適合于各網(wǎng)站的 一種信息表示方式,并且它所定義的標(biāo)準(zhǔn)是相當(dāng)簡(jiǎn)潔的這樣,每個(gè)網(wǎng)站就都可以以標(biāo)準(zhǔn)的方式輸出信息,同時(shí)也能以標(biāo)準(zhǔn)的解析方式(讀取方式)來方便獲取其它 風(fēng)站共享出的信息 1.1.1國(guó)內(nèi)外在該方向的研究現(xiàn)狀及分析最初的0.90版本RSS是由Netscape公司設(shè)計(jì)的,目的是用來建立一個(gè)整合了各主要新聞?wù)军c(diǎn)內(nèi)容的門戶,但是0.90版本的RSS規(guī)范過于復(fù)雜,而一個(gè)簡(jiǎn)化的RSS 0.91版本也隨著Netscape公司對(duì)該項(xiàng)目的放棄而于2000年暫停。不久,一家專門從事博客寫作軟件開發(fā)的公司UserLand接手了RSS 0.91版本的發(fā)展,并把它作為其博客寫作軟件的基礎(chǔ)功能之一繼續(xù)開發(fā),逐步推出了0.92、0.93和0.94版本。隨著網(wǎng)絡(luò)博客的流行,RSS作為一種基本的功能也被越來越多的網(wǎng)站和博客軟件支持。 在UserLand公司接手并不斷開發(fā)RSS的同時(shí),很多的專業(yè)人士認(rèn)識(shí)到需要通過一個(gè)第三方、非商業(yè)的組織,把RSS發(fā)展成為一個(gè)通用的規(guī)范,并進(jìn)一步標(biāo)準(zhǔn)化。于是2001年一個(gè)聯(lián)合小組在0.90版本RSS的開發(fā)原則下,以W3C新一代的語義網(wǎng)技術(shù)RDF(Resource Description Framework)為基礎(chǔ),對(duì)RSS進(jìn)行了重新定義,發(fā)布RSS1.0,并將RSS定義為“RDF Site Summary”。但是這項(xiàng)工作沒有與UserLand公司進(jìn)行有效的溝通,UserLand公司也不承認(rèn)RSS 1.0的有效性,并堅(jiān)持按照自己的設(shè)想進(jìn)一步開發(fā)出RSS的后續(xù)版本,到2002年9月發(fā)布了最新版本RSS 2.0,UserLand公司將RSS定義為“Really Simple Syndication”。 目前RSS已經(jīng)分化為RSS 0.9x/2.0和RSS 1.0兩個(gè)陣營(yíng),由于分歧的存在和RSS 0.9x/2.0的廣泛應(yīng)用現(xiàn)狀,RSS 1.0還沒有成為標(biāo)準(zhǔn)化組織的真正標(biāo)準(zhǔn)。但可以預(yù)計(jì)的是:隨著越來越多的站點(diǎn)對(duì)RSS的支持,RSS已經(jīng)成為目前最成功的XML應(yīng)用。RSS搭建了信息迅速傳播的一個(gè)技術(shù)平臺(tái),使得每個(gè)人都成為潛在的信息提供者。相信很快我們就會(huì)看到大量基于RSS的專業(yè)門戶、聚合站點(diǎn)和更精確的搜索引擎。1.2開發(fā)意義從出現(xiàn)的背景和所采用的技術(shù)我們現(xiàn)在就可以很明顯地看到它對(duì)于各網(wǎng)站或系統(tǒng)將有什么樣重大的作用它最根本的作用就是網(wǎng)站與網(wǎng)站之間信息的標(biāo)準(zhǔn)交換有了這種交換我們將可以很方便且靈活地將原來各自孤立網(wǎng)站整合起來,實(shí)現(xiàn)信息的方便流通,使互聯(lián)網(wǎng)真正變成一個(gè)互聯(lián)互通的網(wǎng)絡(luò)系統(tǒng)同時(shí)實(shí)現(xiàn)信息價(jià)值 的最大化體現(xiàn),給網(wǎng)站帶來更豐富的應(yīng)用,以及提高用戶體驗(yàn)所以可以說RSS對(duì)當(dāng)下互聯(lián)網(wǎng)的作用將是巨大的,深遠(yuǎn)的基于它的這些特性我們就可以改造或改變?cè)瓉砘ヂ?lián)網(wǎng)所應(yīng)用的一些特性和模式,使它的 應(yīng)用更加靈活、多樣。比如前面提供的現(xiàn)在大家普通認(rèn)識(shí)到的通過閱讀器來獲取原來需要在網(wǎng)站上才能獲取信息的一種方式。還有我們可以也可以將網(wǎng)站上各欄目的信息來源由原來的編輯供給改為由來供給。我們可以切實(shí)地感受到開發(fā)rss閱讀器的好處。以閱讀新聞作為舉例,它本身的特點(diǎn)決定了其給我們帶來的好處。.沒有廣告或者圖片來影響標(biāo)題或者文章概要的閱讀; RSS閱讀器自動(dòng)更新你定制的網(wǎng)站內(nèi)容,保持新聞的及時(shí)性;.用戶可以加入多個(gè)定制的RSS提要,從多個(gè)來源搜集新聞?wù)系絾蝹€(gè)數(shù)據(jù)流中。 訪問者使用特定的RSS閱讀器軟件,不必登錄這個(gè)網(wǎng)站就可以讀取RSS文件,看到文件中標(biāo)示的所有網(wǎng)頁的標(biāo)題、摘要、鏈接等信息,并且點(diǎn)擊瀏覽網(wǎng)頁。 通過上述方式,訪問者可以在自己的閱讀器里分門別類地收集許多來自不同網(wǎng)站的自己感興趣的RSS文件,而不必一個(gè)一個(gè)地訪問這些網(wǎng)站。RSS閱讀器實(shí)際上成了讀者自己的個(gè)性化信息庫。 對(duì)于網(wǎng)站來說,RSS方式也有好處。它擴(kuò)大了網(wǎng)站內(nèi)容的傳播面,也增加了網(wǎng)站訪問量,因?yàn)樵L問者調(diào)閱的RSS文件和瀏覽的網(wǎng)頁,都是從網(wǎng)站服務(wù)器上下載的。 RSS文件的網(wǎng)址是固定不變的,網(wǎng)站可以隨時(shí)改變其中的內(nèi)容。RSS內(nèi)容一旦更新,瀏覽者看到的內(nèi)容也隨即更新了。1.3本章小結(jié)通過本章的學(xué)習(xí),我們對(duì)Rss閱讀器的背景有了一定的認(rèn)識(shí),也對(duì)Rss的概念有教深的理解。Rss文檔實(shí)際上就是用XML格式寫的文件。第二章 開發(fā)環(huán)境以及技術(shù)介紹2.1開發(fā)平臺(tái)介紹2.1.1 操作系統(tǒng) : windows xp 2.1.2 數(shù)據(jù)庫管理系統(tǒng)Sql server 20002.1.3 開發(fā)所用主要語言 C# ,Xml。2.1.4 visual studio 2005 Visual studio 2005是微軟的.NET平臺(tái),它比visual studio 2003增加了大量控件和類庫,并使用Framework2.0,減少了約70%的代碼量,界面操作也更智能化。是一套完整的開發(fā)工具,用于生成 ASP Web 應(yīng)用程序、XML Web services、桌面應(yīng)用程序和移動(dòng)應(yīng)用程序。Visual Basic .NET、Visual C+ .NET、Visual C# .NET 和 Visual J# .NET 全都使用相同的集成開發(fā)環(huán)境 (IDE),該環(huán)境允許它們共享工具并有助于創(chuàng)建混合語言解決方案。另外,這些語言利用了 .NET Framework 的功能,此框架提供對(duì)簡(jiǎn)化 ASP Web 應(yīng)用程序和 XML Web services 開發(fā)的關(guān)鍵技術(shù)的訪問??蓴U(kuò)展標(biāo)記語言 (XML) 提供描述結(jié)構(gòu)數(shù)據(jù)的方法。XML 是 SGML 的子集,非常適合在 Web 上傳送。萬維網(wǎng)聯(lián)合會(huì) (W3C) 定義了 XML 標(biāo)準(zhǔn)以使結(jié)構(gòu)化數(shù)據(jù)保持統(tǒng)一并獨(dú)立于應(yīng)用程序。Visual Studio .NET 完全支持 XML,提供了 XML 設(shè)計(jì)器以使編輯 XML 和創(chuàng)建 XML 架構(gòu)更容易。NET Framework 是用于生成、部署和運(yùn)行 XML Web services 和應(yīng)用程序的多語言環(huán)境而我們現(xiàn)在開發(fā)的rss閱讀器的文檔就是符合規(guī)格的標(biāo)準(zhǔn)xml文件。所以該平臺(tái)是用C#開發(fā)該rss閱讀器的最理想的平臺(tái)。2.2 開發(fā)與運(yùn)行軟件所要求的硬件環(huán)境CPU :賽陽2.4D內(nèi)存:512M硬盤空間:80G顯示器:1024.768 分辨率網(wǎng)卡:10M/100M自適應(yīng)2.3 Xml介紹。由于rss文檔是用xml來寫的。那什么是xml呢? XML即可擴(kuò)展標(biāo)記語言(eXtensible Markup Language)。標(biāo)記是指計(jì)算機(jī)所能理解的信息符號(hào),通過此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種信息的文章等。如何定義這些標(biāo)記,既可以選擇國(guó)際通用的標(biāo)記語言,比如HTML,也可以使用象XML這樣由相關(guān)人士自由決定的標(biāo)記語言,這就是語言的可擴(kuò)展性。XML是從SGML中簡(jiǎn)化修改出來的。它主要用到的有XML、XSL和XPath等。 上面這段是對(duì)XML的一個(gè)基本定義,一個(gè)被廣泛接受的說明。簡(jiǎn)單說,XML就是一種數(shù)據(jù)的描述語言,雖然它是語言,但是通常情況下,它并不具備常見語言的基本功能被計(jì)算機(jī)識(shí)別并運(yùn)行。只有依靠另一種語言,來解釋它,使它達(dá)到你想要的效果或被計(jì)算機(jī)所接受。XML的制定目標(biāo)為: XML應(yīng)該可以在互聯(lián)網(wǎng)上直接使用;XML應(yīng)該支持各種不同的應(yīng)用方式;XML應(yīng)該與SGML兼容;處理XML文件的應(yīng)用程序應(yīng)該容易編寫;XML中的可選特性的數(shù)量應(yīng)該減到最小,最好減至沒有;XML文件應(yīng)該具有良好的可讀性,并且比較清晰; 用XML設(shè)計(jì)新的置標(biāo)語言應(yīng)該方便快捷;XML設(shè)計(jì)的置標(biāo)語言應(yīng)該正式、簡(jiǎn)潔;XML文件應(yīng)該容易編制;XML標(biāo)記的簡(jiǎn)潔性并不重要。下面是一個(gè)用xml寫的簡(jiǎn)單符合rss 2.0 格式的文檔。W3SchoolsW3Schools Web Tutorials RSS Tutorial/rssCheck out the RSS tutorialon W3S文檔內(nèi)的第一行為XML聲明-定義了XML的版本和文檔使用的字符編碼。這個(gè)例子里文檔使用的是XML1.0版本,編碼為 ISO-8859-1. 下面的一行描述RSS文檔元素(這個(gè)就像在說:這是一份RSS2.0版本的文檔)再下面的一行描述了文檔的元素:接下來的三行描述了的三個(gè)子元素(,)W3SchoolsW3Schools Web Tutorials然后就是元素,元素包含了RSS展示的一些信息(, 和 )你可以添加數(shù)個(gè)元素:RSS Tutorial/rssCheck out the RSS tutorialon W3S最后的兩行關(guān)閉 和 元素2.4在.NET Framework中處理XML數(shù)據(jù)從MSXML到.net的XML 在. NET Framework出現(xiàn)之前,我們習(xí)慣使用MSXML服務(wù)-一個(gè)基于COM的類庫-寫windows的XML的驅(qū)動(dòng)程序。不像. NET Framework中的類,MSXML類庫的部分代碼比API更深,它完全的嵌在操作系統(tǒng)的底層。MSXML的確能夠與你的應(yīng)用程序通信,但是它不能真正的與外部環(huán)境結(jié)合。 MSXML類庫能在win32中被導(dǎo)入,也能在CLR中運(yùn)用,但它只能作為一個(gè)外部服務(wù)器組件使用。但是基于.NET Framework的應(yīng)用程序能直接的用XML類與.NET Framework 的其它命名空間整合使用,并且寫出來的代碼易于閱讀。 作為一個(gè)獨(dú)立的組件,MSXML分析器提供了一些高級(jí)的特性如異步分析。這個(gè)特性在.NET Framework中的XML類及.NET Framework的其它類都沒有提供,但是,NET Framework中的XML類與其它的類整合可以很輕易的獲得相同的功能,在這個(gè)基礎(chǔ)上我們可以增加更多的功能。 .NET Framework中的XML類提供了基本的分析、查詢、轉(zhuǎn)換XML數(shù)據(jù)的功能。在.NET Framework中,我們可以找到支持Xpath查詢和XSLT轉(zhuǎn)換的類,及讀/寫XML文檔的類。另外,.NET Framework也包含了其它處理XML的類,例如對(duì)象的序列化(XmlSerializer和the SoapFormatter類),應(yīng)用程序配置(AppSettingsReader類),數(shù)據(jù)存儲(chǔ)(DataSet類)。具體到本軟件的設(shè)計(jì),只需要討論實(shí)現(xiàn)基本XML I/O操作的類。 XML分析模式 既然XML是一種標(biāo)記語言,就應(yīng)該有一種工具按一定的語法來分析和理解存儲(chǔ)在文檔中信息。這個(gè)工具就是XML分析器-一個(gè)組件用于讀標(biāo)記文本并返回指定平臺(tái)的對(duì)象。 所有的XML分析器,不管它屬于哪個(gè)操作平臺(tái),不外乎都分以下的兩類:基于樹或者基于事件的處理器。這兩類通常都是用XMLDOM(the Microsoft XML Document Object Model)和SAX(Simple API for XML)來實(shí)現(xiàn)。XMLDOM分析器是一個(gè)普通的基于樹的API-它把XML文檔當(dāng)成一個(gè)內(nèi)存結(jié)構(gòu)樹呈現(xiàn)。SAX分析器是基于事件的API-它處理每個(gè)在XML數(shù)據(jù)流中的元素(它把XML數(shù)據(jù)放進(jìn)流中再進(jìn)行處理)。通常,DOM能被一個(gè)SAX流載入并執(zhí)行,因此,這兩類的處理不是相互排斥的。 總的來說,SAX分析器與XMLDOM分析器正好相反,它們的分析模式存在著極大的差別。XMLDOM被很好的定義在它的functionalition集合里面,你不能擴(kuò)展它。當(dāng)它在處理一個(gè)大型的文檔時(shí),它要占用很大內(nèi)存空間來處理functionalition這個(gè)巨大的集合。 SAX分析器利用客戶端應(yīng)用程序通過現(xiàn)存的指定平臺(tái)的對(duì)象的實(shí)例去處理分析事件。SAX分析器控制整個(gè)處理過程,把數(shù)據(jù)“推出”到處理程序,該處理程序依次接受或拒絕處理數(shù)據(jù)。這種模式的優(yōu)點(diǎn)是只需很少的內(nèi)存空間。 .NET Framework完全支持XMLDOM模式,但它不支持SAX模式。為什么呢?因?yàn)?NET Framework支持兩種不同的分析模式:XMLDOM分析器和XML閱讀器。它顯然不支持SAX分析器,但這并不意味它沒有提供類似SAX分析器的功能。通過XML閱讀器SAX的所有的功能都能很容易的實(shí)現(xiàn)及更有效的運(yùn)用。不像SAX分析器,.NET Framework的閱讀器整個(gè)都運(yùn)作在客戶端應(yīng)用程序下面。這樣,應(yīng)用程序本身就可以只把真正需要的數(shù)據(jù)“推出”,然后從XML數(shù)據(jù)流中跳出來。而SAX分析模式要處理所有的對(duì)應(yīng)用程序有用和無用的信息。 閱讀器是基于.NET Framework流模式工作的,它的工作方式類似于數(shù)據(jù)庫的游標(biāo)。有趣的是,實(shí)現(xiàn)類似游標(biāo)分析模式的類提供對(duì).NET Framework中的XMLDOM分析器的底層支持。XmlReader、XmlWriter兩個(gè)抽象類是所有.NET Framework中XML類的基礎(chǔ)類,包括XMLDOM類、ADO.NET驅(qū)動(dòng)類及配置類。所以在.NET Framework中你有兩種可選的方法去處理XML數(shù)據(jù)。用XmlReader和XmlWriter類直接處理XML數(shù)據(jù),或者用XMLDOM模式處理。更多的關(guān)于在.NET Framework中讀文檔的介紹可以參見MSDN 2002 年八月刊的Cutting Edge欄目文章。 XmlReader類:XML閱讀器支持一個(gè)編程接口,接口用于連接XML文檔,“推出”我們要的數(shù)據(jù)。如果更深入去了解閱讀器,就會(huì)發(fā)現(xiàn)閱讀器工作原理類似于我們的桌面應(yīng)用程序從數(shù)據(jù)庫中取出數(shù)據(jù)的原理。數(shù)據(jù)庫服務(wù)返回一個(gè)游標(biāo)對(duì)象,它包含所有查詢結(jié)果集,并返回指向目標(biāo)數(shù)據(jù)集的開始地址的引用。XML閱讀器的客戶端收到一個(gè)指向閱讀器實(shí)例的引用。該實(shí)例提取底層的數(shù)據(jù)流并把取出的數(shù)據(jù)呈現(xiàn)為一棵XML樹。閱讀器類提供只讀、向前的游標(biāo),我們可以用閱讀器類提供的方法滾動(dòng)游標(biāo)遍歷結(jié)果集中的每一條數(shù)據(jù)。 從閱讀器中看XML文檔不是一個(gè)標(biāo)簽文本文件,而是一個(gè)序列化的節(jié)點(diǎn)集合。它是.NET Framework中的一種特殊的游標(biāo)模式;在.NET Framework中,你找不到其它的任何一個(gè)類似的API函數(shù)。 閱讀器和XMLDOM分析器有幾點(diǎn)不同的地方。XML閱讀器是只進(jìn)的,它沒有父、子、祖宗、兄弟節(jié)點(diǎn)的概念,而且是只讀的。在.NET Framework中,讀寫XML文檔是分為兩種完全不同的功能,分別由XmlReader和XmlWriter類來完成。要編輯XML文檔,我們可以用XMLDOM分析器,或者我們自己設(shè)計(jì)一個(gè)類來實(shí)現(xiàn)這兩種功能。讓我們開始分析閱讀器的程序功能。 XmlReader是一個(gè)抽象類,你可以繼承并擴(kuò)展它的功能。用戶程序一般都基于下面的三種類:XmlTextReader、XmlValidatingReader或者 XmlNodeReader類。所有的這些類都有如圖一的屬性和圖二的方法。要注意的是,某些屬性的值實(shí)際上依賴于實(shí)際的某個(gè)閱讀器類,不同的類與基類可能不同。因此,在圖一中每個(gè)屬性的說明都是以基類為準(zhǔn)的。例如,CanResolveEntity屬性在XmlValidatingReader類中只返回true;而在其它的閱讀器類中它卻可以設(shè)為false。同樣的,在圖二中的某些方法的實(shí)際返回值對(duì)不同的類可能不同。例如,如果節(jié)點(diǎn)類型不是元素節(jié)點(diǎn)(element node),所有包含Atrributes的方法的返回值類型都是void。 XmlTextReader類用只進(jìn),只讀的方式快速訪問XML數(shù)據(jù)流。閱讀器先驗(yàn)證XML文檔是否是格式良好的,如果不是則拋出一個(gè)異常。XmlTextReader 檢查 DTD 的格式是否良好,但不使用 DTD 對(duì)文檔進(jìn)行驗(yàn)證。XmlTextReader通過XML文檔的文件名,或它的URL,或者從文件流中載入XML文檔,然后快速的處理XML文檔數(shù)據(jù)。如果我們需要對(duì)文檔的數(shù)據(jù)進(jìn)行驗(yàn)證,可以用XmlValidatingReader類。 可以用多種方法創(chuàng)建XmlTextReader類的實(shí)例,從硬盤中加載文件,或從URL地址中加載,流(streams)中加載,還有就是從文本中讀入XML文檔數(shù)據(jù): XmlTextReader reader = new XmlTextReader(file); 注意,所有XmlTextReader類的公共(public)構(gòu)造函數(shù)都要求我們指定數(shù)據(jù)源,數(shù)據(jù)源可以是stream、文件或者其它。XmlTextReader默認(rèn)的構(gòu)造函數(shù)是受保護(hù)的(protected),所以不能直接使用。像.NET Framework中所有的閱讀器類一樣(如SqlDataReader類),一旦閱讀器對(duì)象連接并打開,我們就可以用Read方法去訪問數(shù)據(jù)了。開始的時(shí)候只能用Read方法把指針移到第一個(gè)元素;然后我們可以用Read方法或其它方法(如Skip, MoveToContent和ReadInnerXml)移動(dòng)指針到下一個(gè)節(jié)點(diǎn)元素。要處理整個(gè)XML文檔的內(nèi)容,可以根據(jù)Read方法的返回值用一個(gè)循環(huán)遍歷文檔內(nèi)容,因?yàn)镽ead方法返回一個(gè)布爾值,當(dāng)讀到文檔的尾節(jié)點(diǎn)時(shí),Read方法返回false,否則它返回true。 子節(jié)點(diǎn)的縮進(jìn)量是根據(jù)閱讀器的深度屬性(Depth屬性)設(shè)置的,Depth屬性返回一個(gè)整形的數(shù)據(jù),它表示當(dāng)前節(jié)點(diǎn)的嵌套層次。所有文本都放在StringWriter對(duì)象中(一個(gè)非常方便的基于流的封裝了StrigBuilder類的類)。 如前所述,閱讀器不會(huì)自動(dòng)通過Read方法訪問屬性節(jié)點(diǎn)。要訪問當(dāng)前元素的屬性節(jié)點(diǎn)集合,必須用一個(gè)簡(jiǎn)單的用MoveToNextAttribute方法的返回值控制的循環(huán)去遍歷該集合。下面的代碼用于訪問當(dāng)前節(jié)點(diǎn)的所有屬性,并把屬性的名稱和它的值用逗號(hào)分開組合成一個(gè)字符串:if (reader.HasAttributes) while(reader.MoveToNextAttribute() buf += reader.Name + = + reader.Value + ,; reader.MoveToElement(); 當(dāng)完成對(duì)屬性集的處理時(shí),調(diào)用MoveToElement方法使指針返回到屬性所屬的元素節(jié)點(diǎn)。準(zhǔn)確的說,MoveToElement方法并不是真正的移動(dòng)指針,因?yàn)樵谔幚韺傩约瘯r(shí)指針從來就沒有從元素節(jié)點(diǎn)中移開。MoveToElement方法只不過指向某個(gè)內(nèi)部成員,并依次取得成員的值。例如,用Name屬性獲得某個(gè)屬性的屬性名,然后調(diào)用MoveToElement方法把指針移到其所屬的元素節(jié)點(diǎn)處。但是當(dāng)你不需要繼續(xù)處理別的節(jié)點(diǎn)時(shí),就不必再調(diào)用MoveToElement方法了。 2.4 本章小結(jié)本章介紹了開發(fā)環(huán)境的軟件方面和硬件方面的要求,對(duì)visual studio 2005 的優(yōu)點(diǎn)有了一定的認(rèn)識(shí),這對(duì)我們以后的系統(tǒng)開發(fā)帶來許多的方便之處。也簡(jiǎn)要說明了什么是xml,同時(shí)還介紹了一個(gè)用xml寫的標(biāo)準(zhǔn)的rss 2.0文檔。到這里我們都會(huì)對(duì)rss的概念有了更深一層的了解了。第三章 總體設(shè)計(jì)3.1 系統(tǒng)需求分析開發(fā)rss的目的之一就是方便對(duì)網(wǎng)絡(luò)上資源的管理,它的應(yīng)用應(yīng)該可以做到把被動(dòng)獲取信息變?yōu)橹鲃?dòng)獲取信息;把以網(wǎng)站運(yùn)營(yíng)者為中心的信息發(fā)布變?yōu)橐跃W(wǎng)民為中心的信息定制;它還將網(wǎng)絡(luò)上的離散信息聚合起來,形成了一個(gè)信息聚合平臺(tái)這也就是它的名字所表示的:“Really Simple Syndication”。Rss在目前來說應(yīng)用最多的就是通過讀取相關(guān)網(wǎng)站上的用Xml寫的Rss源并把它寫進(jìn)本地的xml格式的文檔。然后再讀取本地的該文檔把它顯示在相應(yīng)的web頁面上。當(dāng)我們?cè)诰W(wǎng)上瀏覽遇到感興趣資源的時(shí)候,如果該網(wǎng)上有rss源,我們就可以通過rss閱讀器把該rss源加入到rss閱讀器的頻道列表中去,并按相應(yīng)的類別分配好?;谶@點(diǎn),所以Rss閱讀器就要實(shí)現(xiàn)添加刪除的功能。當(dāng)我們想要對(duì)已經(jīng)添加在軟件中的頻道進(jìn)行管理的時(shí)候,這就需要增加閱讀器的頻道管理功能。通過該功能可以實(shí)現(xiàn)對(duì)頻道和類別進(jìn)行操作,即編輯或刪除。除這些以外,我們還要考慮到備份與導(dǎo)入的功能,以實(shí)現(xiàn)用戶對(duì)頻道信息的了解。最后一點(diǎn)就是,通過rss閱讀器我們需要能夠做到方便地搜索出相關(guān)的資源,并把它顯示出來。 下面是開發(fā)RSS的流程圖: 3.2系統(tǒng)功能設(shè)計(jì)系統(tǒng)功能模塊的設(shè)計(jì)可以分為以下幾個(gè)模塊:3.2.1添加Rss模塊。該模塊包括添加頻道欄目即AddClass 和添加頻道即AddChannel。添加欄目相當(dāng)是添加了一個(gè)文件夾以把Rss頻道按照自己的意愿分成幾個(gè)類別。所以添加欄目不需要通過讀取網(wǎng)絡(luò)上的Rss文檔而,而是就在本地新建就可以了。添加Rss頻道是通過. NET Framework中提供的類去讀取網(wǎng)絡(luò)上提供的某網(wǎng)站上的Rss文檔,然后進(jìn)行解析,保存在本地,再應(yīng)用相應(yīng)的類把剛保存的文檔寫成Xml格式的Rss文檔。3.2.2頻道管理模塊ChannelManager該模塊只要實(shí)現(xiàn)的功能是編輯或者刪除欄目和頻道的信息。通過該功能模塊,我們可以實(shí)現(xiàn)對(duì)欄目和頻道進(jìn)行相應(yīng)的管理。譬如可以編輯、刪除欄目或頻道,如果選擇了刪除欄目,那么應(yīng)該也會(huì)把處在該欄目下的頻道也給刪除了。如果不需要某頻道了,那就可以選擇刪除頻道。而不是刪除欄目。3.2.3內(nèi)容搜索模塊。通過該模塊可以通過搜索關(guān)鍵字實(shí)現(xiàn)在數(shù)據(jù)庫里查找相關(guān)內(nèi)容并把結(jié)果顯示在頁面上的功能。在Sql數(shù)據(jù)庫里建立合適的表以保存要保留的Rss的內(nèi)容,不過,這些內(nèi)容一般都是關(guān)于頻道的標(biāo)題ItemTitle和簡(jiǎn)單描述Itemdescription。如果想看看存在Rss文檔里面有沒有感興趣的內(nèi)容,可以通過對(duì)本地?cái)?shù)據(jù)庫進(jìn)行搜索,如果有就顯示在相應(yīng)的頁面上,以及把其網(wǎng)上的鏈接也顯示出來。3.2.4備份與導(dǎo)入管理模塊。該模塊要實(shí)現(xiàn)的功能是備份與導(dǎo)入rss頻道信息的功能。當(dāng)我們通過支持Rss的網(wǎng)站上訂閱了Rss的時(shí)候,這樣如果我們更新了某道,那么就相當(dāng)于把該頻道的信息保存了下來。備份與導(dǎo)入明顯可以方便我們?nèi)ス芾眍l道。導(dǎo)出備份的文件格式是以Rss為后綴名的。實(shí)際上就是一個(gè)用Xml寫的文檔。導(dǎo)入模塊可以把先前備份好的文件再導(dǎo)入Rss閱讀器。3.2.5下面是RSS閱讀的功能原理圖:3.3 本章小結(jié)通過本章的系統(tǒng)的總體設(shè)計(jì),我們對(duì)RSS閱讀器的框架有了相當(dāng)清晰的認(rèn)識(shí)了,明白了它只要實(shí)現(xiàn)的模塊是什么,以及模塊間的內(nèi)在聯(lián)系。為以后的進(jìn)一步去實(shí)現(xiàn)模塊的具體功能提供了基礎(chǔ)。第四章 數(shù)據(jù)庫設(shè)計(jì)4.1 數(shù)據(jù)庫設(shè)計(jì)RSS閱讀器需要把RSS文件從提供RSS訂閱的網(wǎng)站上讀取、保存下來,為此,要設(shè)計(jì)一個(gè)數(shù)據(jù)庫用來保存數(shù)據(jù)。 在這里用SQL SERVER 2000來完成這一目標(biāo)。要存儲(chǔ)的數(shù)據(jù)不是blog或新聞組的詳細(xì)內(nèi)容消息,而是用戶自己添加的頻道信息,但可以把內(nèi)容的簡(jiǎn)要信息即RSSDescription包含其中。4.1.1 數(shù)據(jù)表設(shè)計(jì):Rss閱讀器頻道信息表:字段名字段說明數(shù)據(jù)類型長(zhǎng)度必填主鍵RssIdRss欄目IDGIGINT8YYChannelIdRss頻道IDVARCHAR50NChannelTitle頻道標(biāo)題VARCHAR200NChannelDescription頻道內(nèi)容簡(jiǎn)單描述VARCHAR800NChannelLink頻道鏈接VARCHAR50NItemID頻道里類別IDGIGINT8NItemTitle頻道里類別標(biāo)題VARCHAR20NItemDescription頻道里類別內(nèi)容簡(jiǎn)單描述VARCHAR40NItemLink頻道里類別的鏈接VARCHAR50N4.1.2 在數(shù)據(jù)庫中建立表打開SQL Server 2000 企業(yè)管理器,新建一個(gè)數(shù)據(jù)庫名為Rssreader,根據(jù)該表在數(shù)據(jù)庫里新建一個(gè)表:4.2本章小結(jié)在本章,我用Sql server 2000 來保存數(shù)據(jù),由于Rss 閱讀器需要保存的內(nèi)容并不多,用一個(gè)表就足夠完成了。第五章 系統(tǒng)實(shí)現(xiàn)5.1 系統(tǒng)主要功能模塊的具體實(shí)現(xiàn)。5.1.1 XML 讀取器在實(shí)現(xiàn)各項(xiàng)模塊的功能之前,我們首先要了解XML讀取器中的一些類。MicrosoftNET d框架提供了兩組截然不同的類,用于XML驅(qū)動(dòng)的讀/寫操作。這些類就是前面介紹過的XML readers 類和XML writer類。讀取器的基類是XmlReader類,而XmlWriter則提供了編寫器類的基本編程接口。XmlReader是SystemXml 命名空間的一個(gè)抽象類,定義了XML讀取器的功能集.這個(gè)功能集允許開發(fā)人員以非緩存只向前移動(dòng)的只讀方式訪問XML流。沿只前移方向,XML讀取器以跳躍的方式從一個(gè)節(jié)點(diǎn)向下一個(gè)節(jié)點(diǎn)訪問只讀流。XML讀取去將內(nèi)部指針指向當(dāng)前節(jié)點(diǎn),但其屬性和文本與前一節(jié)點(diǎn)或后一節(jié)點(diǎn)的內(nèi)容不相關(guān)。因此,不能修改文本或?qū)傩?,所能做的只是將指針從?dāng)前節(jié)點(diǎn)向前移動(dòng)到下一節(jié)點(diǎn)。然而在訪問屬性節(jié)點(diǎn)時(shí),可以通過索引返回到父節(jié)點(diǎn)或訪問屬性。該訪問的算法是節(jié)點(diǎn)優(yōu)先的,但可以在定制讀取器類中安排其他的訪問算法。5.1.2 使用XmlTextReader類解析XmlTextReader類具有以只向前、只讀的方式,快速訪問XML數(shù)據(jù)流的功能。XmlTestReader類實(shí)例的創(chuàng)建方式為: XmlTextReader readernew XmlTextReader (file)5.1.3 下圖是SystemXml名稱空間的類 XML也是DataSet類中的System名稱空間的一部分,如下表示:5.1.3. 實(shí)現(xiàn)添加Rss欄目的關(guān)鍵代碼using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace RSSReader public partial class AddClass : Form private int _flag; private int _id; public AddClass(int flag,int id,string channelName) InitializeComponent(); this._flag = flag; this._id = id; if (this._flag = 1) this.Text = 修改欄目名; textInput1.InfoText = channelName; private void button_OK_Click(object sender, EventArgs e) if (textInput1.GetText!=null&textInput1.GetText.Trim().Length 0) if (_flag = 0) MenuBar.AddChannel(textInput1.GetText); NavigateBarEvent.NavigateUpdate(0); MessageBox.Show(新的欄目添加成功., , MessageBoxButtons.OK, MessageBoxIcon.Information); else ModifyChnannelName(); NavigateBarEvent.NavigateUpdate(0); this.Close(); else MessageBox.Show(欄目名不能為空格或空字符., , MessageBoxButtons.OK, MessageBoxIcon.Information); private void textInput1_KeyDown(object sender, KeyEventArgs e)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論